如何在选择项目时从JList获取项目

时间:2012-08-16 17:25:34

标签: java swing list selection jlist

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

除非在按下JButton之前未选择任何项目,否则此功能非常有效 - 如果未选择任何内容,则ActionPerformed中的其他说明也不会运行。我已尝试myJList.isSelectionEmpty()作为否定if条件,并将我从myJList.getSelectedIndices()获得的数组长度与0进行比较,但两者均无效。

但是,如果最初点击某个内容然后取消选择(我有一个清晰的选择按钮),它会起作用,并且在随后的每个时间内通过它运行的程序,所以它似乎是第一次需要被触发。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

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

最初,禁用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);
            }
        }
    });