我创建了这个代码,它应该在从组合框中选择一个项目后更改JLabel中的值。当我运行应用程序时,它出现在JLabel中但是当我在组合框中选择其他值时,JLabel中的值不会改变。有谁知道问题出在哪里?
comboBox = new JComboBox<String>();
comboBox.setBounds(172, 50, 106, 22);
frmAccountPayable.getContentPane().add(comboBox);
comboBox.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
Object item = event.getItem();
String expenseCode = item.toString();
try {
String sql2 = "SELECT `Account No`, `Expense Code` FROM `database`.`expense_code_master` " +
"WHERE `Expense Code` = '" + expenseCode + "'";
PreparedStatement pst2 = conn.prepareStatement(sql2);
ResultSet rs = pst2.executeQuery();
String accNo1 = null;
while (rs.next()){
accNo1 = rs.getString("Account No");
}
lblTesting = new JLabel(accNo1);
lblTesting.setBounds(496, 49, 106, 22);
frmAccountPayable.getContentPane().add(lblTesting);
}catch (Exception ex) {
System.out.println("Error: "+ex);
}
}
}
});
答案 0 :(得分:3)
如果组件中已有JLabel
,则无需为每个状态更改重新创建一个。
将该部分移至您还添加comboBox
的位置:
lblTesting = new JLabel(accNo1);
lblTesting.setBounds(496, 49, 106, 22);
frmAccountPayable.getContentPane().add(lblTesting);
但是使用默认构造函数。
而不是每次都添加新标签,只需致电:
lblTesting.setText(accNo1);
话虽如此,我想在你的例子中你添加了新标签,但只显示了第一个 - 取决于你的布局。