import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class JComboBox5 implements ItemListener{
String[] fontsize ={"12","14","13"};
String defaultMessage ="please select";
Font font =null;
JComboBox combo =null;
JLabel label =null;
public JComboBox5(){
JFrame f =new JFrame("jcombobox");
Container contentPane =f.getContentPane();
contentPane.setLayout(new GridLayout(2,1));
label =new JLabel("swing",JLabel.CENTER);
label.setFont(font);
combo =new JComboBox(fontsize);
combo .setBorder(BorderFactory.createTitledBorder("please choose"));
combo.setEditable(true);
ComboBoxEditor editor =combo.getEditor();
combo.configureEditor(editor,defaultMessage);
combo.addItemListener(this);
contentPane.add(label);
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new JComboBox5();
}
public void itemStateChanged(ItemEvent e){
if(e.getStateChange()==ItemEvent.SELECTED){
int fontsize =0;
try{
fontsize =Integer.parseInt((String)e.getItem());
label.setText("swing size:"+fontsize);
}catch(NumberFormatException ne){}
}
}
}
-------------
我碰到的问题是,当程序启动后,第一次选择“12”时,不会触发itemStateChanged,选择了“14”后再回过头来选择“12”就正常了。为什么会这样?
import java.awt.event.*;
import javax.swing.*;public class JComboBox5 implements ItemListener{
String[] fontsize ={"12","14","13"};
String defaultMessage ="please select";
Font font =null;
JComboBox combo =null;
JLabel label =null;
public JComboBox5(){
JFrame f =new JFrame("jcombobox");
Container contentPane =f.getContentPane();
contentPane.setLayout(new GridLayout(2,1));
label =new JLabel("swing",JLabel.CENTER);
label.setFont(font);
combo =new JComboBox(fontsize);
combo .setBorder(BorderFactory.createTitledBorder("please choose"));
combo.setEditable(true);
ComboBoxEditor editor =combo.getEditor();
combo.configureEditor(editor,defaultMessage);
combo.addItemListener(this);
contentPane.add(label);
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new JComboBox5();
}
public void itemStateChanged(ItemEvent e){
if(e.getStateChange()==ItemEvent.SELECTED){
int fontsize =0;
try{
fontsize =Integer.parseInt((String)e.getItem());
label.setText("swing size:"+fontsize);
}catch(NumberFormatException ne){}
}
}
}
-------------
我碰到的问题是,当程序启动后,第一次选择“12”时,不会触发itemStateChanged,选择了“14”后再回过头来选择“12”就正常了。为什么会这样?
解决方案 »
- 急!螺旋数组!代码不知道哪错了!求指教
- 请帮我看一下这段代码谢谢了
- thinking in java中一个不明白的地方
- JAVA编程思想第4版的习题答案
- 哪里能找到一个功能较全的表格组件(至少能合并单元格),网上找到的都要不菲的费用
- 好心人,请回答java的序列化有什么作用,什么时候用?
- 我第一个JAVA程序sayhello问题出哪了,跪求————————
- 原来还可以,为什么加入xml操作后,再打包后的jar文件运行没反应了
- StringBuffer 的 capacity 方法返回什么容量?
- 用socket怎样实现Vector向量的发送?
- 寻求web中生成树型菜单的方法!
- JTABLE列移动问题
combo.setSelectedIndex(2);
它会使第三个也就是13被默认选中,所以这个时候你再选13的时候,因为选项没有发生改变,所以也就不会调用itemStateChanged方法了.
所以你一开始选12的时候就不会变化了.因为默认就是选中你的第一项的
to: theforever(碧海情天)
不要随便说一句,以致于误导人家。
有好的解决方法,不防说的详细点。
import java.awt.event.*;
import javax.swing.*;public class JComboBox5 implements ItemListener,ActionListener{
String[] fontsize ={"12","14","13"};
String defaultMessage ="please select";
Font font =null;
JComboBox combo =null;
JLabel label =null;public JComboBox5(){
JFrame f =new JFrame("jcombobox");
Container contentPane =f.getContentPane();
contentPane.setLayout(new GridLayout(2,1));
label =new JLabel("swing",JLabel.CENTER);
label.setFont(font);combo =new JComboBox(fontsize);
combo .setBorder(BorderFactory.createTitledBorder("please choose"));
combo.setEditable(true);
ComboBoxEditor editor =combo.getEditor();
combo.configureEditor(editor,defaultMessage);
//combo.addItemListener(this);
combo.addActionListener(this);contentPane.add(label);
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}public static void main(String[] args){
new JComboBox5();
}
public void itemStateChanged(ItemEvent e){
if(e.getStateChange()==ItemEvent.SELECTED){
int fontsize =0;
try{
fontsize =Integer.parseInt((String)e.getItem());
label.setText("swing size:"+fontsize);
}catch(NumberFormatException ne){}
}
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==combo)
label.setText("swing size: "+combo.getSelectedItem());
}
}用ActionPerformed