【问题标题】:How to get items from JList only when items are selected仅在选择项目时如何从 JList 获取项目
【发布时间】:2012-08-16 17:25:34
【问题描述】:

在我的程序中 - JApplet - 我有一个 JList 填充有 DefaultListModel。用户可以选择最多选择一定数量的项目,并通过按下JButton 来表示他/她已经完成了他/她的选择。然后,我将在ActionPerformed 事件处理程序中选择的项目用于JButton

除非在按下 JButton 之前未选择任何项目,否则此方法效果很好 - 如果未选择任何项目,我的 ActionPerformed 中的其余指令也不会操作。我已尝试将 myJList.isSelectionEmpty() 作为否定 if 条件,并将我从 myJList.getSelectedIndices() 获得的数组长度与 0 进行比较,但均无效。

但是,如果最初单击某些内容然后取消选择(我有一个明确的选择按钮),它会起作用,并且在随后的每次通过程序它都会起作用,所以它似乎只是第一次需要被触发.

谁能指出我正确的方向?

【问题讨论】:

  • 听起来你的逻辑有问题 - 请显示一个 SSCCE(或至少在按下按钮时执行的操作)来说明问题

标签: java swing list selection jlist


【解决方案1】:

如果我理解你的话,这可能是一种解决方案。

最初,禁用 JButton。然后,为您的 JList 提供 ListSelectionListener;在此事件处理程序中,检查是否进行了选择(至少选择了一项)。如果是 - 启用 JButton;否则禁用它。这样,如果没有选择任何项目,您将阻止执行 JButton 的 ActionEvent 处理程序,这是您想要的(我想)。 假设您的 JList 是 lstChoices,而您的 JButton 是 btnSubmit。这应该做上面提到的:

lstChoices.addListSelectionListener(new ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent e)
        {
            if(lstChoices.getSelectedValuesList().size() > 0)
            {
                btnSubmit.setEnabled(true);
            }
            else
            {
                btnSubmit.setEnabled(false);
            }
        }
    });

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2011-02-01
    • 2011-09-08
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多