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