1つのスクロールを使用JScrollPane
して別のスクロールまたは複数のスクロールを移動するにはどうすればよいJScrollPane
ですか?
例:
私はJTable
別々のに3つのを持っていJScrollPane
ます。スクロールペインを互いにバインドしたい。
1つを使用する場合、もう1つは同じようにスクロールします。
Listener
私が見つけることができないある種のs?
何か疑惑はありますか?
よろしくお願いします。
1つのスクロールを使用JScrollPane
して別のスクロールまたは複数のスクロールを移動するにはどうすればよいJScrollPane
ですか?
例:
私はJTable
別々のに3つのを持っていJScrollPane
ます。スクロールペインを互いにバインドしたい。
1つを使用する場合、もう1つは同じようにスクロールします。
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に3つのJTableがあります。お互いに「バインド」スクロールしたい。
JTablesをJScrollPanesに入れないでください。各JTableをJPanelに入れ、3つのJPanelを1つのJScrollPaneに入れます。
3つのJTableを1つのJTableに結合する方がおそらく簡単でしょう。
David Kroukampの提案は、スクロールバーに次のようなモデルを共有させることでした。
scrollerA.getVerticalScrollBar().setModel(
scrollerB.getVerticalScrollBar().getModel());
これは確かに正常に機能しますが、すべてのテーブルに単一のスクロールバーを使用する場合は、一方のスクロールバーをもう一方のスクロールバーに置き換える方がさらに簡単です。
scrollerA.setVerticalScrollBar(
scrollerB.getVerticalScrollBar());
このメソッドでは1つのスクロールバーのみが表示され、両方のテーブルがスクロールされます。