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

Java 如何仅在选择项目时从JList获取项目,java,swing,list,selection,jlist,Java,Swing,List,Selection,Jlist,在我的程序-aJApplet-中,我有一个JList,其中填充了一个DefaultListModel。用户可以选择最多一定数量的项目,并通过按JButton指示他已完成选择。然后,我使用ActionPerformed事件处理程序中为JButton选择的项目 除非在按下JButton之前未选择任何项目,否则此操作非常有效-如果未选择任何内容,则myActionPerformed中的其余指令也不会运行。我尝试将myJList.isSelectionEmpty()作为一个负if条件,并将从myJLis

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

除非在按下
JButton
之前未选择任何项目,否则此操作非常有效-如果未选择任何内容,则my
ActionPerformed
中的其余指令也不会运行。我尝试将
myJList.isSelectionEmpty()
作为一个负if条件,并将从
myJList.getselecteddinces()
获得的数组长度与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);
            }
        }
    });

听起来你的逻辑有问题-请展示一个SSCCE(或者至少是按下按钮时执行的操作)来演示问题