我一直在尝试创建一个带有两个数字和一个数字的JFrame程序 操作(在jcombobox内)来计算答案。我需要获取数字1和2的用户输入,并将值分配给可用于计算答案的int。 num1是int变量,num1field是文本字段的名称。
num1field.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
num1 = Integer.parseInt(num1field.getText());
num1field.setText(num1);
}
}
);
是的,num1 int已经在类的顶部声明了。我收到一个错误,它说的是setText。
感谢所有帮助:)
答案 0 :(得分:2)
没有方法JTextField#setText(int)
,您只能提供String
num1field.setText(String.valueOf(num1));
应该工作
您可以查看How to use Formatted Text Fields和How to use Spinners,它们可以为您提供更好的功能
更新了如何计算结果值的想法示例
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");
}
}
});
}
}
}