0

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

这很好用,除非在JButton按下之前没有选择任何项目 - 如果没有选择任何内容,我的其余指令ActionPerformed也不会操作。我尝试myJList.isSelectionEmpty()过否定 if 条件,并将我得到的数组长度myJList.getSelectedIndices()与 0 进行了比较,但都不起作用。

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

谁能指出我正确的方向?

4

1 回答 1

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);
            }
        }
    });
于 2012-08-23T23:47:10.523 回答