如何使用一个滚动条JScrollPane
来移动另一个或多个滚动条JScrollPane
?
例如:
我JTable
在单独的 s 中有三个JScrollPane
s。我想将滚动窗格相互绑定。
如果我使用一个 - 另一个将以相同的方式滚动。
某种Listener
我找不到的s?
有什么建议吗?
此致。
如何使用一个滚动条JScrollPane
来移动另一个或多个滚动条JScrollPane
?
例如:
我JTable
在单独的 s 中有三个JScrollPane
s。我想将滚动窗格相互绑定。
如果我使用一个 - 另一个将以相同的方式滚动。
某种Listener
我找不到的s?
有什么建议吗?
此致。
保留JTables
' 标题的一种方法是BoundedRangeModel
对每个JScrollPane
' 的垂直滚动条使用相同的标题并将每个 ScrollPane 添加到单个JPanel
.
class ParallelTables {
static JScrollPane createTable() {
DefaultTableModel model = new DefaultTableModel(100, 2);
for (int row=model.getRowCount(); --row>=0;) {
model.setValueAt(row, row, 0);
}
JTable table = new JTable(model);
return new JScrollPane(table);
}
public static void main(String[] args) throws Exception {
JScrollPane scrollerA = createTable();
JScrollPane scrollerB = createTable();
scrollerA.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_NEVER);
// the following statement binds the same BoundedRangeModel to both vertical scrollbars.
scrollerA.getVerticalScrollBar().setModel(
scrollerB.getVerticalScrollBar().getModel());
JPanel panel = new JPanel();
panel.add(scrollerA);
panel.add(scrollerB);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
参考:
我在单独的 JScrollPanes 中有三个 JTable。我想“绑定”滚动到彼此。
不要将 JTables 放在 JScrollPanes 中。将每个 JTable 放入一个 JPanel,将 3 个 JPanel 放入一个 JScrollPane。
将 3 个 JTable 组合成一个 JTable 可能会更容易。
David Kroukamp 的建议是让滚动条共享一个模型,如下所示:
scrollerA.getVerticalScrollBar().setModel(
scrollerB.getVerticalScrollBar().getModel());
这当然可以,但是如果您想对所有表格使用单个滚动条,则将一个滚动条替换为另一个滚动条会更简单:
scrollerA.setVerticalScrollBar(
scrollerB.getVerticalScrollBar());
此方法只显示一个滚动条,并且滚动两个表。