我有两个JComboBox
由数字combobox1= 1 to 5
和c ombobox2= 1 to 6.
当我点击我的JButton
时,我希望添加两个所选数字并显示在Textfield.
我已经有完整的代码,除了计算以及如何在textfield.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class exer1 extends JFrame{
JFrame form = new JFrame ("haay");
JButton btn = new JButton ("Compute");
JTextField txt = new JTextField (10);
JComboBox cb1 = new JComboBox();
JComboBox cb2 = new JComboBox();
public exer1(){
form.getContentPane().setLayout(null);
form.setSize (500,550);
form.getContentPane().add(txt);
form.getContentPane().add(btn);
form.getContentPane().add(cb1);
form.getContentPane().add(cb2);
cb1.addItem(new Integer(1));
cb1.addItem(new Integer(2));
cb1.addItem(new Integer(3));
cb1.addItem(new Integer(4));
cb1.addItem(new Integer(5));
cb2.addItem(new Integer(1));
cb2.addItem(new Integer(2));
cb2.addItem(new Integer(3));
cb2.addItem(new Integer(4));
cb2.addItem(new Integer(5));
cb2.addItem(new Integer(6));
txt.setBounds(150,90,100,30);
btn.setBounds(40,170,100,40);
cb1.setBounds(190,140,50,30);
cb2.setBounds(190,190,50,30);
btn.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
}
});
form.show();
}
public static void main (String args []){
exer1 xx = new exer1();
}
}
请帮忙。
答案 0 :(得分:4)
提供的sscce显然是家庭作业,但练习的目标并不那么明确。有些事情值得注意。
按照惯例,类名以首字母大写字母开头。
为了便于阅读,应考虑冗长的初始化。
添加到每个JComboBox
的对象是类Integer
的实例,它为数学整数的子集建模。注意为什么valueOf()
“通常应该优先于构造函数使用。”
在更新String
中的显示之前,无需将任何内容转换为actionPerformed()
。由于getSelectedItem()
返回Object
类型的值,因此结果必须转换为Integer
;这在本地构建的数据中非常安全。
恢复Integer
值后,很容易将总和作为int
值。
与A Visual Guide to Layout Managers成为朋友永远不会太早。
修订示例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Exercise1 extends JFrame {
JFrame form = new JFrame("Exercise1");
JButton btn = new JButton("Compute");
JTextField txt = new JTextField(10);
JComboBox<Integer> cb1 = new JComboBox<>();
JComboBox<Integer> cb2 = new JComboBox<>();
public Exercise1() {
form.setLayout(new GridLayout(0, 1));
form.add(txt);
form.add(btn);
form.add(cb1);
form.add(cb2);
for (int i = 1; i <= 5; i++) {
cb1.addItem(Integer.valueOf(i));
cb2.addItem(Integer.valueOf(i));
}
cb2.addItem(new Integer(6));
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Integer v1 = (Integer) cb1.getSelectedItem();
Integer v2 = (Integer) cb2.getSelectedItem();
int sum = v1.intValue() + v2.intValue();
txt.setText("42"); // really should convert sum to a String
}
});
form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
form.pack();
form.setVisible(true);
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Exercise1 exercise1 = new Exercise1();
}
});
}
}
作为参考,Java 7引入ComboBoxModel<E>
以安全地改进类型,尽管getSelectedItem()
仍向后兼容。
答案 1 :(得分:3)
我有点改写了整个剧本(抱歉给您带来任何不便)......
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class exer1 extends JFrame implements ActionListener {
JPanel row1 = new JPanel();
JLabel first = new JLabel("Select the first number:", JLabel.RIGHT);
JComboBox fNum = new JComboBox();
JPanel row2 = new JPanel();
JLabel second = new JLabel("Select the second number:", JLabel.RIGHT);
JComboBox sNum = new JComboBox();
JPanel row3 = new JPanel();
JButton comp = new JButton("Compute");
JTextField total = new JTextField(5);
public exer1() {
super("Calculator");
row1.add(first);
fNum.addItem("1");
fNum.addItem("2");
fNum.addItem("3");
fNum.addItem("4");
fNum.addItem("5");
fNum.addItem("6");
row1.add(fNum);
add(row1);
row2.add(second);
sNum.addItem("1");
sNum.addItem("2");
sNum.addItem("3");
sNum.addItem("4");
sNum.addItem("5");
sNum.addItem("6");
row2.add(sNum);
add(row2);
comp.addActionListener(this);
row3.add(comp);
total.setEditable(false);
row3.add(total);
add(row3);
setLayout(new FlowLayout());
setSize(500, 550);
setVisible(true);
}
public void actionPerformed(ActionEvent event) {
int num1 = Integer.parseInt(fNum.getSelectedItem().toString());
int num2 = Integer.parseInt(sNum.getSelectedItem().toString());
total.setText("" + (num1 + num2));
}
public static void main(String[] args) {
exer1 xx = new exer1();
}
}
答案 2 :(得分:-1)
使用form.setVisible(true);
然后:
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int cb1Int = Integer.parseInt(cb1.getSelectedItem().toString());
int cb2Int = Integer.parseInt(cb2.getSelectedItem().toString());
txt.setText(String.valueOf(cb1Int + cb2Int));
}
});
祝你好作业。 ;)