java – Swing JTable:当行可见或滚动到底部时的事件?
发布时间:2020-12-14 06:06:35 所属栏目:Java 来源:网络整理
导读:我正在寻找一种方法,当JTable滚动使得特定行变得可见时,或者当表格的底部滚动到视图中时,它会被通知.理想情况下,这应该在没有轮询的情况下完成,但是通过一些事件触发.有任何想法吗? 解决方法 将ChangeListener添加到滚动窗格的视口. viewport = scrollpane.
我正在寻找一种方法,当JTable滚动使得特定行变得可见时,或者当表格的底部滚动到视图中时,它会被通知.理想情况下,这应该在没有轮询的情况下完成,但是通过一些事件触发.有任何想法吗?
解决方法
将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 } 如果您的表不可排序,请忽略分拣机. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |