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

Java 如何:按下按钮后从JTextField获取输入,java,swing,input,panel,jtextfield,Java,Swing,Input,Panel,Jtextfield,我对Java相当陌生,只想问一下ActionListener方法。 我已经创建了一个GUI,在一个面板中,我想让用户输入x的值,然后按submit。看起来是这样的: f(x)=[输入字段]-[输入字段]^2(提交按钮) 我迷路了,不知道在ActionPerformed方法中放什么来获取用户输入的值 (如果相关,我创建面板、文本字段等的方法也是私有的) 我已经尝试过x1.getText(),但它似乎无法访问变量,因为JPanel方法是私有的,ActionPerformed是公共的 private

我对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);
      }

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

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

  • {}符号表示代码块,如果在 在区块内,您无法直接访问它
  • 此外,无法直接从按钮事件中提取x1或x2的值
  • 如果不想更改No.1,可以在方法内部定义一个内联函数,如下所示:

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

    需要Java 1.8+

    它需要私有吗?@Thiagoleassantos我将其私有化,因为我直接从构造函数调用它来创建panel1(选项卡式窗格中的一个面板)。我想为每个窗格创建一个不同的类,但不知道如何做,因为我会得到关于静态、非静态上下文的错误。所以我想我会在主类中获取输入值,然后在另一个类中进行计算,至少在我的脑海中听起来更容易!您的两个代码段是否来自同一个类?如果是这样,则访问修饰符的
    private
    access并不重要。你的问题描述很模糊。当你向别人描述问题时,不要猜测是什么导致了问题。相反,只需描述发生了什么。当您尝试
    x1.getText()
    时,会发生什么情况。@MarsAtomic我得到一个错误,即找不到符号,并且两个代码段都来自同一个类what符号?请不要拐弯抹角,只需完整地发布错误消息。当你向别人寻求帮助时,最好是预测他们需要什么来帮助你。要完整、准确。记住,你不是付钱给我们来做这件事的——不要让它变得比需要的更难。快乐的学习伙伴,让我知道,如果你需要更多的帮助来理解要做什么才能让它工作。
    submit1.addActionListener(e -> {
            System.err.println("x1 : " + x1.getText());
            System.err.println("x2 : " + x2.getText());
        });