昨天我问了一个类似的问题,当我得到一些指导时,我现在陷入了困境。我有一个包含GUI的程序,该GUI带有两个并排的列表。第一个列表(我将其称为左侧)包含许多项,这些项是从上载的文件中解析出来的。
默认情况下,其他列表(我将称为右侧列表)为空。用户可以使用一些按钮在两个列表之间传输项目。在运行时,将保留右侧列表中的项目,而左侧列表将被丢弃。现在,我已经成功添加了一个计数器,该计数器可以动态显示每个列表的项目总数。
昨天我有一个想法,我想添加另一个动态计数器,该计数器将向用户显示在左侧列表中选择了多少项(但尚未移动)。原因是用户可能有非常大的列表(300多个项目),并且需要移动一定数量(例如50个)。拥有一个计数器来显示他们当前选择的项目数量可以节省一些时间。
我知道要执行此操作,我需要使用一个列表选择侦听器,该侦听器将具有一种设置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似乎没有更新,有人可以就这个问题向我提出建议吗?
在侦听器中,selectedCount.getSelectedIndices()。length将告诉您当前选择了多少个项目。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句