简体   繁体   English

JTextField 从用户获取 integer 输入以在单击 JButton 时添加

[英]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.输入要添加的值后,我得到零。

This is the GUI form of the application这是应用程序的 GUI 形式

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM