如何:按下按钮后从 JTextField 获取输入
How to: get input from JTextField after button is pressed
我对 Java 还很陌生,只是想问一下 ActionListener 方法。
我创建了一个 GUI,在一个面板中我想要求用户输入 x 的值并按下提交。它看起来像这样:
f(x)= [输入字段] - [输入字段] ^2(提交按钮)
我迷路了,不知道在 ActionPerformed 方法中放入什么来获取用户输入的值
(如果相关的话,我创建面板、文本字段等的方法也是私有的)
我已经尝试过 x1.getText(),但它似乎无法访问变量,因为 JPanel 方法是私有的,而 ActionPerformed 是 public
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
}
}
根据您的描述,我推断 panel2 是一种方法,JTextfields x1 和 x2 都是方法 panel2 的局部变量,无法在其外部访问。
您需要全局声明 x1 和 x2,如果您希望它们是私有的,请将 getter 和 setter 与它们相关联并在 actionperformed 方法中使用它。
- {} 符号代表代码块,如果您在
inside-block 你不能直接访问它。
- 此外,您无法直接从按钮事件中提取 x1 或 x2 的值。
如果你不想改变No.1,你可以在方法内部定义一个内联函数,如下所示:
submit1.addActionListener(e -> {
System.err.println("x1 : " + x1.getText());
System.err.println("x2 : " + x2.getText());
});
需要Java 1.8+
我对 Java 还很陌生,只是想问一下 ActionListener 方法。 我创建了一个 GUI,在一个面板中我想要求用户输入 x 的值并按下提交。它看起来像这样: f(x)= [输入字段] - [输入字段] ^2(提交按钮) 我迷路了,不知道在 ActionPerformed 方法中放入什么来获取用户输入的值 (如果相关的话,我创建面板、文本字段等的方法也是私有的)
我已经尝试过 x1.getText(),但它似乎无法访问变量,因为 JPanel 方法是私有的,而 ActionPerformed 是 public
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
}
}
根据您的描述,我推断 panel2 是一种方法,JTextfields x1 和 x2 都是方法 panel2 的局部变量,无法在其外部访问。
您需要全局声明 x1 和 x2,如果您希望它们是私有的,请将 getter 和 setter 与它们相关联并在 actionperformed 方法中使用它。
- {} 符号代表代码块,如果您在 inside-block 你不能直接访问它。
- 此外,您无法直接从按钮事件中提取 x1 或 x2 的值。
如果你不想改变No.1,你可以在方法内部定义一个内联函数,如下所示:
submit1.addActionListener(e -> {
System.err.println("x1 : " + x1.getText());
System.err.println("x2 : " + x2.getText());
});
需要Java 1.8+