我正在使用 aJTable
并通过 CTRL+A 选择所有行。我得到了正确的选定行,但是当我试图获取值时,它只给出视口中的值。
我在这里添加了我的代码的一部分。
JTable _resultTable = new JTable();
JScrollPane _resultPane = new JScrollPane();
_resultTable.setModel(JUTableBindingFactory.createAttributeListBinding(_panelBinding, _resultTable , _searchViewName, _searchViewName + "Iter", _searchViewName + "IterBinding", FIELDS));
_resultPane.getViewport().add(_resultTable);
MultiSelectionListListener.setMultiSelectionModel(_resultTable);
_changeSelectedButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int[] tableRows = _resultTable.getSelectedRows();
System.out.println(" length :" + tableRows.length);
Row[] dataRows = new Row[tableRows.length];
RowIterator iterator = null;
JUIteratorBinding iterBinding = _panelBinding.getRowIterBinding(_searchViewName, _searchViewName + "Iter",_searchViewName.replace('.','_')+"IterBinding");
iterator = iterBinding != null ? iterBinding.getNavigatableRowIterator() : null;
for (int i = 0; i < tableRows.length; i++)
{
dataRows[i] = iterator.getRowAtRangeIndex(rowIndexToRangeIndex(tableRows[i], iterator));
System.out.println(" Name :" + i + " " +dataRows[i].getAttribute(1));
}
}
从上面的代码片段中,如果存在的记录数是 50,我们可以看到 10 条记录,那么输出是:
长度:50
姓名:0 纳丁
姓名 : 1 Nadine1
名称 : 2 Nadine23
名称 : 3 Nadine3
名称 : 4 Nadine4
姓名 : 5 Nadine5
姓名 : 6 Nadine6
姓名 : 7 Nadine7
名称 : 8 Nadine8
姓名 : 9 Nadine9
名称 : 10 Nadine10
在打印 10 条记录后,它会NullPointerExpetion
在dataRows[i].getAttribute(1)
.
这意味着它不会为不在视口上的记录挑选数据。
那么解决方案可能是什么?
编辑 我正在使用 BC4J 绑定来获取表中的数据。