我有2个JComboBox
由数字组成combobox1= 1 to 5
and combobox2= 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();
}
}
请帮忙。
The sscce http://sscce.org/明确提供了作业,但练习的目标却不太明确。有几件事值得注意。
GUI 应该构建在事件派发线程 http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html.
按照惯例,类名以首字母大写字母开头。
为了可读性,应该考虑冗长的初始化。
添加到每个的对象JComboBox
是类的实例Integer http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html,它对数学整数的子集进行建模。注意原因valueOf() http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#valueOf%28int%29“通常应该优先于构造函数使用。”
无需将任何内容转换为String
直到更新显示的时间actionPerformed()
。因为getSelectedItem() http://download.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html#getSelectedItem%28%29返回类型的值Object
,结果必须转换为Integer
;这在本地构建的数据的上下文中是完全安全的。
一旦Integer
值已经恢复,很容易获得总和int
value.
最终的转换结果为sum
to a String http://download.oracle.com/javase/7/docs/api/java/lang/String.html留作练习。暗示:String http://download.oracle.com/javase/7/docs/api/java/lang/String.html有一个合适的方法,其名称现在看起来可能很熟悉。
成为朋友永远不会太早布局管理器的视觉指南 http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html.
修改后的示例:
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> http://download.oracle.com/javase/7/docs/api/javax/swing/ComboBoxModel.html为了安全地改进类型,尽管getSelectedItem()
保持向后兼容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)