我正在寻找一种方法,以便在 JTable 滚动时收到通知,以便特定行变得可见,或者在表底部滚动到视图中时失败。理想情况下,这应该在不轮询的情况下完成,而是通过一些事件触发来完成。有任何想法吗?
Add a ChangeListener
到滚动窗格的视口。
viewport = scrollpane.getViewport();
viewport.addChangeListener(this);
然后这会检查可见的行(也可以轻松扩展到列)
public void stateChanged(ChangeEvent e)
{
Rectangle viewRect = viewport.getViewRect();
int first = table.rowAtPoint(new Point(0, viewRect.y));
if (first == -1)
{
return; // Table is empty
}
int last = table.rowAtPoint(new Point(0, viewRect.y + viewRect.height - 1));
if (last == -1)
{
last = tableModel.getRowCount() - 1; // Handle empty space below last row
}
for (int i = first; i <= last; i++)
{
int row = sorter.convertRowIndexToModel(i); // or: row = i
//... Do stuff with each visible row
}
if (last == tableModel.getRowCount() - 1) {} //... Last row is visible
}
忽略sorter
如果您的表格不可排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)