坚持将列表选择监听器添加到程序

时间:2016-03-29 14:20:32

标签: java swing

昨天我问了一个类似的问题,当我得到一些方向时,我现在卡住了。我有一个程序,其中包含一个GUI,其中包含两个并排的列表。第一个列表(我将在左侧引用)包含许多从上传文件中解析的项目。

默认情况下,另一个列表(我将调用右侧列表)为空。用户可以使用一些按钮在两个列表之间传输项目。在运行时,将保留右侧列表中的项目,并且将丢弃左侧列表。现在我已经成功添加了一个计数器,动态显示每个列表的项目总数。

昨天我有一个想法,我想添加另一个动态计数器,向用户显示在左侧列表中选择了多少项目(但尚未移动)。这样做的原因是用户可能拥有非常大的列表(300多个项目)并需要移动一定数量(如50)。拥有一个计数器来显示他们当前选择了多少项目将节省他们一点时间。< / p>

我理解这样做我需要使用一个列表选择监听器,它将有一个方法来设置我的JLabel的文本。问题是我无法弄清楚获取列表大小的方法。

这是我的列表创建的地方。

input = new DefaultListModel();

这里填充了一系列项目,这些项目是在基于上传文件的缓冲编写器期间填充的。

String[] inputItems = new String[MainWriter.entryDetails.size()];
inputItems = MainWriter.entryDetails.toArray(inputItems);

for(int i = 0; i < inputItems.length; i++){
            input.addElement(inputItems[i]);
        }

创建列表:

inputDetails = new JList(output);
        inputDetails.setVisibleRowCount(10);
        inputDetails.setFixedCellHeight(20);
        inputDetails.setFixedCellWidth(400);
        inputDetails.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

        //Creates a new scroll pane for the inputDetails. 
        JScrollPane list2 = new JScrollPane(inputDetails);

这是我尝试创建列表选择监听器..

inputDetails.addListSelectionListener(new ListSelectionListener(){

            @Override
            public void valueChanged(ListSelectionEvent arg0) {

                selectedCount.setText(inputDetails.);

            }



        });

如您所见,我不确定将文本设置为当前所选项目的最佳方法是什么。

我相信这足以说明我的问题。我想拥有选定项目行,然后动态地说明用户突出显示的左侧列表中有多少项目。

非常感谢任何帮助。

编辑:

根据建议,我添加了以下内容:

inputDetails.addListSelectionListener(new ListSelectionListener(){

            @Override
            public void valueChanged(ListSelectionEvent arg0) {


                String counter = Integer.toString(inputDetails.getSelectedIndices().length);
                selectedCount.setText("Currently Selected Transactions: "+counter);

            }



        });
然而,JLabel似乎没有更新,有人可以告诉我这个问题吗?

1 个答案:

答案 0 :(得分:2)

在侦听器中,selectedCount.getSelectedIndices()。length将告诉您当前选择了多少项。