我编写了这段代码,它应该在从组合框中选择一个项之后更改JLabel中的值。当我运行应用程序时,它会出现在JLabel中,但是当我在combobox中选择其他值时,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);
}
}
}
});发布于 2014-08-20 13:51:09
如果组件中已经有一个JLabel,则不需要为每个状态更改重新创建一个。
将该部分移到添加comboBox的位置
lblTesting = new JLabel(accNo1);
lblTesting.setBounds(496, 49, 106, 22);
frmAccountPayable.getContentPane().add(lblTesting);但是使用默认构造函数。
而不是每次添加一个新标签,只需调用:
lblTesting.setText(accNo1);尽管如此,我猜在您的示例中添加了新的标签,但是只显示了第一个标签--取决于您的布局。
https://stackoverflow.com/questions/25405440
复制相似问题