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

问题描述 投票:0回答:2

我对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

        }
    } 
java user-interface input panel jtextfield
2个回答
0
投票

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

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


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 +

© www.soinside.com 2019 - 2024. All rights reserved.