【发布时间】:2022-07-26 18:31:02
【问题描述】:
我正在尝试制作计算器。
在这里,用户可以添加multipleJTextFields,只需单击一键即可获取他/她想要的输入。
现在我希望用户在multipleJTextFields 中输入他添加的内容,然后单击“结果”按钮将显示所有内容的总和。但我总是得到0 作为输出。
代码:
public class Button extends JFrame {
private JPanel contentPane;
private JButton btnAdd;
private JButton btnResult;
private JTextField resultField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Button frame = new Button();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Button() {
initComponents();
}
static JTextField field = null;
//static JTextField fields[] = new JTextField[10];
private static int y = 0;
ArrayList<String> arr = new ArrayList<String>();
int ans, sum = 0;
private void initComponents() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 527, 414);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
btnAdd = new JButton(\"Add\");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
field = new JTextField();
field.setBounds(45, y += 60, 284, 32);
field.setAlignmentX(Component.CENTER_ALIGNMENT);
contentPane.add(field);
contentPane.revalidate();
contentPane.repaint();
}
});
btnAdd.setBounds(170, 341, 89, 23);
contentPane.add(btnAdd);
btnResult = new JButton(\"Result\");
btnResult.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < arr.size(); i++) {
arr.add(field.getText());
sum += Integer.parseInt(arr.get(i));
}
resultField.setText(String.valueOf(sum));
}
});
btnResult.setBounds(383, 306, 89, 23);
contentPane.add(btnResult);
resultField = new JTextField();
resultField.setBounds(361, 275, 129, 20);
contentPane.add(resultField);
resultField.setColumns(10);
}
}
请帮助我如何找到正确的输出?
-
你能分享一下整体代码吗?
-
您最好的选择是向我们展示可编译和可运行的代码。我们不想看到你的整个程序,而是你应该将你的代码压缩成仍然可以编译的最小部分,没有与你的问题无关的额外代码,但仍然可以演示你的问题,换句话说,minimal reproducible example。请查看链接以了解此有用构造的详细信息。同样,如果代码非常小并且仍然是可编译和可运行的,那么更多的人将能够完全理解代码和问题并帮助提供一个体面的答案。
-
我已经编辑并完美地提供了代码,以便每个人现在都可以轻松理解。
-
您的代码无法为我编译,因为有一个方法
initComponents()被调用但不存在于您发布的代码中。 -
顺便提一句:永远不能做任何手动尺寸/定位 - 那是独家的LayoutManager 的任务(显然不能设置为 null :)