JComboBox 返回双精度值
JComboBox returning double value
我开始制作一个小应用程序,用户需要从组合框中 select 他们的省份,我向组合框添加了一个动作侦听器。我想测试 ActionListener
所以我只是让它打印 selected 到控制台的内容。出于某种原因,似乎我得到了两次返回组合框的值。例如,我在组合框上 select "Alberta","Alberta Alberta" 打印到控制台。有人知道为什么会这样吗?
JComboBox comboProv = new JComboBox(provinces);
comboProv.setBounds(40, 79, 137, 24);
contentPane.add(comboProv);
comboProv.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String selectedProv = (String)comboProv.getSelectedItem();
System.out.print(selectedProv);
}
});
将其放入监听器中。它打印了两次,因为它被调用用于 selected
和 deselected
.. 所以将其添加到过滤器
if (e.getStateChange() == ItemEvent.SELECTED) {
String selectedProv = (String)comboProv.getSelectedItem();
System.out.print(selectedProv);.
} else if(e.getStateChange() == ItemEvent.DESELECTED){
//Do any operations you need to do when an item is de-selected.
}
你没有添加一个ActionListener
,你添加了一个ItemListener
,一个ItemListener
会在值变化时被通知两次,一次是针对ItemEvent.DESELECTED
事件一次是 ItemEvent.SELECTED
.
如果您对更改选择不感兴趣,只需使用 ActionListener
comboProv.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedProv = (String)comboProv.getSelectedItem();
System.out.print(selectedProv);
}
});
只会通知一次
避免使用 null
布局,像素完美布局是现代 ui 设计中的一种错觉。影响组件个体大小的因素太多,none 是您可以控制的。 Swing 旨在与核心的布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正
我开始制作一个小应用程序,用户需要从组合框中 select 他们的省份,我向组合框添加了一个动作侦听器。我想测试 ActionListener
所以我只是让它打印 selected 到控制台的内容。出于某种原因,似乎我得到了两次返回组合框的值。例如,我在组合框上 select "Alberta","Alberta Alberta" 打印到控制台。有人知道为什么会这样吗?
JComboBox comboProv = new JComboBox(provinces);
comboProv.setBounds(40, 79, 137, 24);
contentPane.add(comboProv);
comboProv.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String selectedProv = (String)comboProv.getSelectedItem();
System.out.print(selectedProv);
}
});
将其放入监听器中。它打印了两次,因为它被调用用于 selected
和 deselected
.. 所以将其添加到过滤器
if (e.getStateChange() == ItemEvent.SELECTED) {
String selectedProv = (String)comboProv.getSelectedItem();
System.out.print(selectedProv);.
} else if(e.getStateChange() == ItemEvent.DESELECTED){
//Do any operations you need to do when an item is de-selected.
}
你没有添加一个ActionListener
,你添加了一个ItemListener
,一个ItemListener
会在值变化时被通知两次,一次是针对ItemEvent.DESELECTED
事件一次是 ItemEvent.SELECTED
.
如果您对更改选择不感兴趣,只需使用 ActionListener
comboProv.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedProv = (String)comboProv.getSelectedItem();
System.out.print(selectedProv);
}
});
只会通知一次
避免使用 null
布局,像素完美布局是现代 ui 设计中的一种错觉。影响组件个体大小的因素太多,none 是您可以控制的。 Swing 旨在与核心的布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正