首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemListener不改变值

ItemListener不改变值
EN

Stack Overflow用户
提问于 2014-08-20 13:01:23
回答 1查看 150关注 0票数 0

我编写了这段代码,它应该在从组合框中选择一个项之后更改JLabel中的值。当我运行应用程序时,它会出现在JLabel中,但是当我在combobox中选择其他值时,JLabel中的值不会改变。有人知道问题出在哪里吗?

代码语言:javascript
复制
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);

            }
        }
    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 13:51:09

如果组件中已经有一个JLabel,则不需要为每个状态更改重新创建一个。

将该部分移到添加comboBox的位置

代码语言:javascript
复制
lblTesting = new JLabel(accNo1);
lblTesting.setBounds(496, 49, 106, 22);
frmAccountPayable.getContentPane().add(lblTesting);

但是使用默认构造函数。

而不是每次添加一个新标签,只需调用:

代码语言:javascript
复制
lblTesting.setText(accNo1);

尽管如此,我猜在您的示例中添加了新的标签,但是只显示了第一个标签--取决于您的布局。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25405440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档