2012-08-16 188 views
0

在我的程序中 - 一个JApplet - 我有一个JList,其中填充了DefaultListModel。用户可以选择一定数量的项目,并通过按JButton来表示他已完成他/她的选择。然后,我使用ActionPerformed事件处理程序中为JButton选择的项目。如何仅在选择物品时从JList获取物品

除非JButton按下之前没有选中的项这个伟大的工程 - 如果没有被选中的指示其余的在我ActionPerformed没有任何操作。我已经尝试myJList.isSelectionEmpty()作为否定条件,并且还将从myJList.getSelectedIndices()得到的数组长度与0进行比较,但都无效。但是,如果最初点击了某个对象并取消选择(我有一个清晰的选择按钮),它就可以工作,并且在随后的每一次通过它的程序中都能正常工作,所以它似乎只是第一次需要它触发。

任何人都可以指向正确的方向吗?

+1

听起来像你的逻辑错误 - 请显示一个SSCCE(或至少按下按钮时执行的动作),演示问题 – kleopatra 2012-08-18 13:52:37

回答

0

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

最初,禁用JButton。然后,用ListSelectionListener提供你的JList;在此事件处理程序中,检查是否进行了选择(至少选择了一个项目)。如果是 - 启用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); 
      } 
     } 
    });