当前位置: 首页 > 知识库问答 >
问题:

JComboBox ActionListener 在使用 removeAllItems() 后不起作用

林德辉
2023-03-14

我有两个JComboBox;一个将删除另一个项目中的所有项目(如果已填充),然后添加一组新项目,第二个触发一个事件,该事件使用所选项目从数据库中获取信息。在第一个组合框删除项目并添加新项目后,就会出现问题;当我选择第二个 JComboBox 中的任何项目时,触发的事件不再发生。

下面我提供了我的代码片段:

第一个组合框

    cmbIDs.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            selection = (String)cmbIDs.getSelectedItem();
            if (!(selection.equals("Select an username")))//current selection in combobox is stored as string
            {
                comboActivate(selection);
                if (!unitC.getText().equals("")){
                    unitC.setText("");
                }
                if (!lecturer.getText().equals("")){
                    lecturer.setText("");
                }

                if (!(courseD.getText().equals("Not Enrolled"))){    
                    populateUnits(selection);
                }

            }
            else{
                JOptionPane.showMessageDialog(null,"Please select a Surname.");
            }
        }
    });

删除填充单位(字符串选择ID)中的项目:

    try 
    {
        units.removeAllItems();
        units.addItem("Select a Unit");
    }
    catch (NullPointerException npe)
    {
        units.addItem("Select a Unit"); 
    }

在此指令通过客户端发送到服务器之后,在该服务器中查询数据库,服务器回复信息,然后将这些信息添加到第二个JComboBox中。我还向您保证,在使用 removeAllItems() 后,这些项目会添加到 JComboBox 中。

第二个jComboBox:

units.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent ue)
    {
        uSelect = (String)units.getSelectedItem();
        if (!(uSelect.equals("Select a Unit")))//current selection in combobox is stored as string
        {
            System.out.println(uSelect);
            unitActivate(uSelect);
        }
        else
        {
            JOptionPane.showMessageDialog(null,"Please select a Unit.");
        }
    }
});

共有2个答案

万嘉石
2023-03-14

它对我有用

try {
     boxListMaterial.removeActionListener(controller);
     boxListMaterial.removeAllItems();
}catch (Exception e){}
boxListMaterial.addActionListener(controller);

控制器 - 操作侦听器*

孔磊
2023-03-14

看起来您的代码永远不会从数据库中获取一组新的项目,因此用户永远无法选择除“选择单位”以外的任何内容,而您的第二个代码块会忽略它。

 类似资料:
  • 我有一个ImageView,下面有一个EditText。我希望在查看ImageView时能够写入EditText。EditText此时不可见。有人知道如何实现吗?我用TextWatcher试了一下,但TextChanged后的滚动不起作用。 xml如下所示:

  • 问题内容: 我有这个功能: 我的页面使用最喜欢的按钮加载内容,但是在Ajax调用并生成其他新内容后,单击新内容的按钮时该功能不起作用。有什么不对吗? 问题答案: 那是因为您正在使用动态内容。 您需要将点击调用更改为委托方法,例如 要么

  • 问题内容: 我已经阅读了一些有关我的问题的信息,但仍然没有得到正确的答案。我尝试了.on()方法仍然无法正常工作。我正在使用Laravel。 JS 加载页面后,我想要的所有东西都可以正常工作,但是当我使用replaceWith()方法更新元素,然后onclick无法正常工作时。 我检查了更新的html和属性,所有这些都在正确的位置。 问题答案: 您需要使用事件委托:- 因此更改::- 至::- 所

  • 问题内容: 我在iOS上的FCM通知有问题。 我收到成功通知时,我的应用程序是在前台(回调中被激发),但是当应用程序在后台(我看不出在iOS中的通知栏的任何东西)我没有收到通知。 因此,我认为问题在于FCM发送的消息格式。我的服务器发送到FCM的json格式如下: 如您所见,我的json中有两个块:一个通知块(用于在后台接收通知)和一个数据块(用于在前台接收通知)。 我不明白为什么没有收到后台通知

  • 不是我的安全泪珠是这样的: 我现在导入证书: 然后我重新启动KeyCloak: 编辑: 这是我记录的错误: ])-故障说明:{“WFLYCTL0080:失败的服务“=>{”org.wildfly.core.management.security.realm.undertowrealm.key-manager“=>”WFlyDM0018:无法启动服务,原因是:UnrecoverableKeyExce

  • 问题内容: 这有效: 但是,这不是: 在第二个示例中,数组未添加到自身。 问题答案: 是的,不是 您所做的可能也是有效的代码,但是现在您正在做 它适用于数字类型(我假设您有)。没有数组索引的简化示例: 样品: 输出: -5 -5 5 5 为了清晰起见,从评论中复制: 您基本上是在说。在这种情况下,仅需指示它是一个正整数即可。这是有效的代码,但这不是您想要的。

  • 我已经尝试过使用URLSearchParams,但仍然无法使其工作。 谢了。