从JList中获取多个选定项

时间:2015-02-10 12:14:59

标签: java swing jlist

我正在创建一个包含四个列表的屏幕。基本上是两对列表,您可以在其中选择一对列表中的行,并将它们移动到对中的另一个列表中。

查看文档我需要为每个列表使用ListSelectionModel来确定选择了哪些行。我将使用[Sel]或[Des]按钮进行实际传输。

sample screen

文档和示例说我需要一个ListSelectionListener但是因为在用户点击按钮之前我不会访问模型我真的需要一个监听器吗?如果我没有监听器,模型是否仍会设置getMinSelectionIndex,getMaxSelectionIndex和isSelectedIndex?

2 个答案:

答案 0 :(得分:6)

您不需要听众,只有在其他地方保持同步的情况下才能使用听众,这是您不需要的。

您可以在选择事件发生后的任何时刻访问所选索引。方法JList.getSelectedIndices返回当前所选索引的数组,getSelectedValuesList()根据您的需要返回实际项....

JList<String> items = new JList<String>(new String[] { "foo", "bar", "baz" });
// simulate selection
items.setSelectedIndices(new int[] { 0, 2 });

稍后......

// get actual values
System.out.println(items.getSelectedValuesList());
// get indexes
System.out.println(Arrays.asList(items.getSelectedIndices()));

答案 1 :(得分:2)

  

但是因为在用户点击按钮之前我不会访问模型我真的需要一个监听器吗?

没有。只需要监听器来通知列表的项目被选中或去除,并且由于您正在等待来自JButton的通知,因此它的ActionListener就是您需要的所有内容。

  

如果我没有监听器,模型是否仍会设置getMinSelectionIndex,getMaxSelectionIndex和isSelectedIndex?

这与听众无关。如果您提出要求,该模型仍应提供此信息。

但为什么要问这些问题呢?通过简单的测试很容易发现这一点。