如何:在按下按钮后从JTextField获取输入

时间:2019-10-21 20:41:32

标签: java swing input panel jtextfield

我对Java还是很陌生,只想问一下ActionListener方法。 我已经创建了一个GUI,并且在一个面板中我想让用户输入x的值并按Submit。看起来像这样: 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

        }
    } 

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  1. {}符号代表代码块,如果您在 内部块,您无法直接访问它。
  2. 此外,您无法直接从按钮事件中提取x1或x2的值。

如果您不想更改No.1,则可以在方法内部定义一个内联函数,如下所示:

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

需要Java 1.8 +