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