我对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
}
}
答案 0 :(得分:0)
根据您的描述,我推断panel2是一个方法,而JTextfields x1和x2都是方法panel2的局部变量,无法在其外部访问。
您将需要全局声明x1和x2,如果希望它们是私有的,请将它们与getter和setter关联起来,并在actionperformed方法中使用它。
答案 1 :(得分:0)
如果您不想更改No.1,则可以在方法内部定义一个内联函数,如下所示:
submit1.addActionListener(e -> {
System.err.println("x1 : " + x1.getText());
System.err.println("x2 : " + x2.getText());
});
需要Java 1.8 +