Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从JTextField中获取值并将其移动到Int变量中_Java_Swing_Jframe_Jtextfield_Parseint - Fatal编程技术网

Java 如何从JTextField中获取值并将其移动到Int变量中

Java 如何从JTextField中获取值并将其移动到Int变量中,java,swing,jframe,jtextfield,parseint,Java,Swing,Jframe,Jtextfield,Parseint,我一直在尝试创建一个JFrame程序,它包含两个数字和一个 操作(在jcombobox内)来计算答案。我需要获取数字1和2的用户输入,并将值分配给一个int,该int可用于计算答案。num1是int变量,num1field是textfield的名称 num1field.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){

我一直在尝试创建一个JFrame程序,它包含两个数字和一个 操作(在jcombobox内)来计算答案。我需要获取数字1和2的用户输入,并将值分配给一个int,该int可用于计算答案。num1是int变量,num1field是textfield的名称

    num1field.addActionListener(
        new ActionListener(){
            public void actionPerformed(ActionEvent event){
                num1 = Integer.parseInt(num1field.getText());
                num1field.setText(num1);
            }
        }
     );
是的,num1 int已经在类的顶部声明了。我得到一个错误,上面写着setText


感谢所有的帮助:)

没有方法
JTextField#setText(int)
,您只能提供
字符串

num1field.setText(String.valueOf(num1));
应该有用

您可能想看看,它可能会为您提供更好的功能,以实现您想要实现的目标

更新了如何计算结果值的想法示例

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class QuickCalc {

    public static void main(String[] args) {
        new QuickCalc();
    }

    public QuickCalc() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JTextField numField1;
        private JTextField numField2;
        private JComboBox cbModifier;
        private JLabel lblResult;

        private JButton equals;

        public TestPane() {

            numField1 = new JTextField(4);
            numField2 = new JTextField(4);
            cbModifier = new JComboBox();
            equals = new JButton("=");
            lblResult = new JLabel("?");

            DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>();
            model.addElement("+");
            model.addElement("-");
            model.addElement("/");
            model.addElement("x");
            cbModifier.setModel(model);

            setLayout(new GridBagLayout());
            add(numField1);
            add(cbModifier);
            add(numField2);
            add(equals);
            add(lblResult);

            equals.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    try {
                        int num1 = Integer.parseInt(numField1.getText());
                        int num2 = Integer.parseInt(numField2.getText());

                        // Make your calculations here...
                        // Update the lblResult with the resulting value...
                        lblResult.setText(String.valueOf(42));                        
                    } catch (NumberFormatException nfe) {
                        nfe.printStackTrace();
                        lblResult.setText("Bad numbers");
                    }
                }                    
            });
        }
    }
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.GridBagLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.DefaultComboxModel;
导入javax.swing.JButton;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类快速计算器{
公共静态void main(字符串[]args){
新的快速计算器();
}
公共快速计算器(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
私有JTextField numField1;
私有JTextField numField2;
私人JComboBox CBM修改器;
私人JLabel lblResult;
私有按钮等于;
公共测试窗格(){
numField1=新的JTextField(4);
numField2=新的JTextField(4);
cbModifier=newjcombobox();
等于=新的JButton(“=”);
lblResult=新的JLabel(“?”);
DefaultComboxModel=新的DefaultComboxModel();
模型.补遗(“+”);
模型.附录(“-”);
模型.附录(“/”);
模型附录(“x”);
cbModifier.setModel(model);
setLayout(新的GridBagLayout());
添加(numField1);
添加(CBM修改器);
添加(numField2);
加(等于);
添加(lblResult);
equals.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
试一试{
int num1=Integer.parseInt(numfied1.getText());
int num2=Integer.parseInt(numfied2.getText());
//在这里进行计算。。。
//使用结果值更新lblResult。。。
lblResult.setText(String.valueOf(42));
}捕获(NumberFormatException nfe){
nfe.printStackTrace();
lblResult.setText(“坏数字”);
}
}                    
});
}
}
}

按照MadProgrammer(1+)回答,但将来如果您遇到错误,最好在此处发布错误,让我们查看。它通常会准确地告诉您出了什么问题。您的代码毫无意义。。1)
setText()
需要一个字符串。2) 您正在将字符串解析为整数,并将相同的值设置为相同的textfield它仍然告诉我,无论我做什么,答案都是零。如果您需要,我可以发布整个程序。是否调用了
actionPerformed
方法begin?我还建议您仅在需要时从文本字段中提取值…我不必调用我的actionPerformed,因为它被放在num1field.addActionListenerNo的参数中,但只有当用户按[enter]时才会调用它,否则您的
num1
字段将永远不会更改。。。