我有两个ComboBoxes
JcomboBox1.addItemListener(this)
jComboBox2.addItemListener(this)
如何在同一itemListener函数中处理这些? 我正在为1个组合框处理它,但需要处理两个组合框
public void itemStateChanged(ItemEvent ie) {
String Product=(String)jComboBox1.getSelectedItem();
ResultSet rs=db.GetPriceOfaProduct(Product);
try{
rs.next();
int price=rs.getInt("pPrice");
jLabel6.setText("Amount Per Item is "+price);
}catch(Exception e)
{
System.out.println("Error in Taking Product Price");
}
答案 0 :(得分:0)
您可以使用comboBox1.getSelectedItem()
- 而不是使用comboBox2.getSelectedItem()
或JComboBox comboBox = (JComboBox) ie.getItem();
- 然后您可以引用任何JComboBox触发事件。
使用getSource()
而不是getItem()
答案 1 :(得分:0)
使用ItemEvent.getSource()
检查哪个JComboBox
已更改选择。
请注意更改选择时,项目听众会收到两次通知,一次取消选中该项目,然后再选择另一项。
public static void main(String[] args) {
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(500, 500));
frame.getContentPane().setLayout(new GridLayout(5, 5));
JComboBox<String> comboBox1 = new JComboBox<>(new String[] { "11", "12" });
JComboBox<String> comboBox2 = new JComboBox<>(new String[] { "21", "22" });
ItemListener listener = (e) -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (e.getSource() == comboBox1) {
System.out.printf("JComboBox 1 state changed: %s selected\n", e.getItem());
}
else if (e.getSource() == comboBox2) {
System.out.printf("JComboBox 2 state changed: %s selected\n", e.getItem());
}
}
};
comboBox1.addItemListener(listener);
comboBox2.addItemListener(listener);
frame.getContentPane().add(comboBox1);
frame.getContentPane().add(comboBox2);
frame.setVisible(true);
}