在我的计划中 - JApplet
- 我有JList
,其中填充了DefaultListModel
。用户可以选择最多一定数量的项目,并通过按JButton
表示他已完成他/她的选择。然后,我使用ActionPerformed
事件处理程序中为JButton
选择的项目。
除非在按下JButton
之前未选择任何项目,否则此功能非常有效 - 如果未选择任何内容,则ActionPerformed
中的其他说明也不会运行。我已尝试myJList.isSelectionEmpty()
作为否定if条件,并将我从myJList.getSelectedIndices()
获得的数组长度与0进行比较,但两者均无效。
但是,如果最初点击某个内容然后取消选择(我有一个清晰的选择按钮),它会起作用,并且在随后的每个时间内通过它运行的程序,所以它似乎是第一次需要被触发。
有人能指出我正确的方向吗?
答案 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);
}
}
});