[英]JTextField to get integer input from user to add when clicked on JButton
I am to build a simple swing UI application to get input from user from separate JTextField and then finally click on a Button to perform addition to display on a JTextField below the JButton.我要构建一个简单的 swing UI 应用程序,以从单独的 JTextField 获取用户的输入,然后最后单击按钮执行添加以显示在 JButton 下方的 JTextField 上。
The input field(JTextField) is to receive integer values.输入字段(JTextField)用于接收 integer 值。
package com.APPOne_G5;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AppOne_G5 {
private JPanel calculatorFrame;
private JTextField inputField1;
private JTextField inputField2;
private JButton calculateButton;
private JTextField outputField;
private JLabel inputFieldLabel1;
private JLabel inputFieldLabel2;
private JLabel outputFieldLabel;
private int number1, number2;
private int calc = number1 + number2;
public AppOne_G5() {
inputField1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
number1 = Integer.parseInt(inputField1.getText());
}
});
inputField2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
number2 = Integer.parseInt(inputField2.getText());
}
});
calculateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
calc = number1 + number2;
outputField.setText(String.valueOf(number1+number2));
}
});
outputField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
outputField.setEditable(false);
outputField.setText(String.valueOf(calc));
}
});
}
public static void main(String[] args) {
JFrame app = new JFrame("Group 5 AppOne");
app.setDefaultCloseOperation(app.EXIT_ON_CLOSE);
app.setContentPane(new AppOne_G5().calculatorFrame);
app.setLocationRelativeTo(null);
app.setVisible(true);
app.pack();
}
}
I get Zero after i enter values to be added.输入要添加的值后,我得到零。
Further to my comment, you only need one action listener that activates when you click the button.根据我的评论,您只需要一个在单击按钮时激活的动作侦听器。 Here is a complete working example of how it might work:
这是它如何工作的完整工作示例:
public class AppOne_G5 {
private JFrame app = new JFrame("Group 5 AppOne");
private JPanel calculatorFrame = new JPanel();
private JTextField inputField1 = new JTextField("2");
private JTextField inputField2 = new JTextField("5");
private JButton calculateButton = new JButton("Calculate");
private JTextField outputField = new JTextField(" ");
private JLabel inputFieldLabel1 = new JLabel("Enter Integer");
private JLabel inputFieldLabel2 = new JLabel("Enter Integer");;
private JLabel outputFieldLabel = new JLabel("Result");
private int number1, number2;
private int calc;
public AppOne_G5() {
//Add components in order
app.add(calculatorFrame);
app.setDefaultCloseOperation(app.EXIT_ON_CLOSE);
calculatorFrame.add(inputFieldLabel1);
calculatorFrame.add(inputField1);
calculatorFrame.add(inputFieldLabel2);
calculatorFrame.add(inputField2);
calculatorFrame.add(calculateButton);
calculatorFrame.add(outputFieldLabel);
calculatorFrame.add(outputField);
//Create action listener
calculateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Get the inputs
number1 = Integer.parseInt(inputField1.getText());
number2 = Integer.parseInt(inputField2.getText());
System.out.println("number 1: " + number1 + ", number2: " + number2);
//Calculate the output
calc = number1 + number2;
System.out.println("number 1: " + number1 + ", number2: " + number2 + ", calc: "+calc);
//Show the output
outputField.setText(String.valueOf(calc));
}
});
//Show JFrame
app.setVisible(true);
app.pack();
}
public static void main(String[] args) {
new AppOne_G5();
}
}
To debug why you are not getting the expected outupt you can use System.out.println("...");
要调试为什么你没有得到预期的输出,你可以使用
System.out.println("...");
. . For example if you were to use the following then you could see if the issue is beacause calc is wrong, or if numebr1 or number2 were already zero:
例如,如果您要使用以下内容,那么您可以查看问题是否是因为 calc 错误,或者 numebr1 或 number2 是否已经为零:
calc = number1 + number2;
System.out.println("number 1: " + number1 + ", number2: " + number2 + ", calc: "+calc);
Once you know where the issue is you can go further back in the code and work out why the value is zero.一旦您知道问题出在哪里,您就可以在代码中进一步返回 go 并找出值为零的原因。
As Scorfield mentions, all u need is just one ActionListener on the calculateButton
.正如 Scorfield 所提到的,您所需要的只是
calculateButton
上的一个 ActionListener 。 That's where u should get the text entered by the user.那就是你应该得到用户输入的文本的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.