如何使用一个JScrollPane
中的一个滚动来移动另一个或多个JScrollPane
?
例如:
我在单独的JTable
中有三个JScrollPane
个。我想将滚动窗格绑定到彼此。
如果我使用一个 - 另一个将以相同的方式滚动。
我找不到的某种Listener
?
任何sugestions?
最好的问候。
答案 0 :(得分:9)
保留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);
}
}
<强>参考:强>
答案 1 :(得分:1)
我在单独的JScrollPanes中有三个JTable。我想“绑定”滚动到彼此。
不要将JTable放在JScrollPanes中。将每个JTable放入JPanel,并将3个JPanel放入一个JScrollPane。
将3个JTable组合成一个JTable可能更容易。
答案 2 :(得分:1)
David Kroukamp的建议是让滚动条共享一个模型,如下所示:
scrollerA.getVerticalScrollBar().setModel(
scrollerB.getVerticalScrollBar().getModel());
这当然可以正常工作,但是如果你想为所有表使用一个滚动条,那么用一个滚动条替换另一个滚动条就更简单了:
scrollerA.setVerticalScrollBar(
scrollerB.getVerticalScrollBar());
此方法只显示一个滚动条,并滚动两个表格。