【问题标题】:JList doesn't display new added element from my comboboxJList 不显示我的组合框中新添加的元素
【发布时间】:2016-03-26 15:23:47
【问题描述】:

我在另一个类中创建了从DefaultListModel 获取元素的组合框。但是,当我从组合框中单击一个项目时,它不会将项目元素添加到我的Jlist

【问题讨论】:

  • 1) 不要使用 mouseClicked。如果鼠标在 mousePressed 和 mouseReleased 事件之间移动一个像素,您将不会产生点击。使用 mousePressed 或 mouseReleased。 2)如果这没有帮助,那么发布一个正确的SSCCE 来证明问题。根据您的几行随机代码,我们无法判断发生了什么。还要向您的代码添加一些调试语句,以准确查看正在执行的代码。你的“如果条件”是真的吗?

标签: java swing list combobox jlist


【解决方案1】:

您正在将您的MouseListener 添加到JList。但期待从组合框中选择的项目触发actionPerformed

但是,当我从组合框中单击一个项目时,它不会添加 项目元素到我的 Jlist

MouseListener添加到JList的代码:

courseList = new JList(list);   
courseList.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent arg0) {
        String selectedValue = (String) mealsCombo.getSelectedItem();
        if(selectedValue.equals("Main")){
            list.addElement("Main");
        }
    }
});

因此,将鼠标侦听器添加到您的组合框中。实际上ActionListenerItemListener 可能会更好。

【讨论】:

  • 我将代码从我的Jlist 复制到了我的combobox 中。我在我的帖子中更新了上面的代码。我还添加了ActionListener。但是,现在它将名称菜单添加到我的 Jlist 中,但我的 Jlist @rdonuk 中的元素
  • super.addElement(new itemList()); 这行很奇怪。你对此有何期待?你为什么在这里创建项目列表?
  • 这个巨大的帮助谢谢你,但这仍然没有显示 Jlist 中每个项目的价格和千卡
  • 检查Meal 类。在toString 中,您可以决定每餐将在JList 中显示哪些文本。比如你在toString中返回Name + " " + Kcal,就会出现kcal。
猜你喜欢
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多