【问题标题】:How to: get input from JTextField after button is pressed如何:按下按钮后从 JTextField 获取输入
【发布时间】:2020-02-17 23:43:37
【问题描述】:

我对 Java 还很陌生,只是想问一下 ActionListener 方法。 我创建了一个 GUI,在一个面板中我想要求用户输入 x 的值并按提交。它看起来像这样: f(x)= [输入字段] - [输入字段] ^2(提交按钮) 我迷路了,不知道在 ActionPerformed 方法中放什么来获取用户输入的值 (如果相关的话,我创建面板、文本字段等的方法也是私有的)

我已经尝试过 x1.getText(),但它似乎无法访问变量,因为 JPanel 方法是私有的,而 ActionPerformed 是公共的


private JPanel panel2() 
    {    
        inputPanel.setLayout(new FlowLayout());

        JTextField  x1 = new JTextField();
        JTextField  x2 = new JTextField();

        JLabel f = new JLabel ("F(x)= ");
        JLabel f2= new JLabel (" - ");
        JLabel f3 = new JLabel (" ^2 ");
        JButton submit1 = new JButton("Submit values");

        submit1.addActionListener(this);

        inputPanel.add(f);
        inputPanel.add(x1);
        inputPanel.add(f2);
        inputPanel.add(x2);
        inputPanel.add(f3);
        inputPanel.add(submit1);
      }
    {
        if("submit1".equals(e.getActionCommand()))
        {
           // and that's where I get lost

        }
    } 

【问题讨论】:

  • 需要保密吗?
  • @ThiagoEliasSantos 我已将其设为私有,因为我直接从构造函数调用它来创建 panel1(选项卡式窗格中的一个面板)我想为每个窗格创建一个不同的类,但没有不知道该怎么做,因为我会收到有关静态、非静态上下文的错误。所以我想我会在主类中获取输入值并在不同的类中进行计算,至少在我的脑海中听起来更容易!
  • 您的代码 sn-ps 是否来自同一类?如果是这样,private 访问修饰符就无关紧要了。您的问题描述含糊不清。当您向他人描述问题时,不要猜测导致问题的原因。相反,只描述发生了什么。当您尝试x1.getText() 时,会发生什么确切地。
  • @MarsAtomic 我收到错误提示找不到符号,是的,两个 sn-ps 都来自同一类
  • 什么符号?请不要拐弯抹角,只发布完整的错误消息。当你向人们寻求帮助时,最好预测他们需要什么来帮助你。完整且准确。请记住,您并没有付钱让我们这样做 - 不要让它变得比需要的更难。

标签: java swing input panel jtextfield


【解决方案1】:
  1. {} 符号表示代码块,如果您在 inside-block 你不能直接访问它。
  2. 此外,您无法直接从按钮事件中提取 x1 或 x2 的值。

如果你不打算改变 No.1,你可以在方法内部定义一个内联函数,如下所示:

submit1.addActionListener(e -> {
        System.err.println("x1 : " + x1.getText());
        System.err.println("x2 : " + x2.getText());
    });

需要 Java 1.8+

【讨论】:

    【解决方案2】:

    根据您的描述,我推断 panel2 是一种方法,JTextfields x1 和 x2 都是方法 panel2 的局部变量,在它之外无法访问。

    您需要全局声明 x1 和 x2,如果您希望它们是私有的,请将 getter 和 setter 与它们相关联,并在 actionperformed 方法中使用它。

    【讨论】:

    • 快乐的学习伙伴,如果您需要更多帮助来了解如何使其发挥作用,请告诉我。
    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2012-02-10
    • 2022-12-04
    • 2021-12-08
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多