概要

JSplitPaneの左右に、JTableをそれぞれ配置し、スクロールや追加などが同期するようにモデルを共有します。

サンプルコード

JScrollPane scroll1 = new JScrollPane(leftTable);
//scroll1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
scroll1.setVerticalScrollBar(new JScrollBar(Adjustable.VERTICAL) {
  @Override public Dimension getPreferredSize() {
    Dimension dim = super.getPreferredSize();
    return new Dimension(0, dim.height);
  }
});
JScrollPane scroll2 = new JScrollPane(table);
scroll2.getVerticalScrollBar().setModel(scroll1.getVerticalScrollBar().getModel());
view all

解説

  • JTable
    • TableModelを共有し、JTable#removeColumn()で、それぞれで非表示にする列を指定
    • 左右でRowSorterSelectionModelを共有
  • JScrollPane
    • それぞれ内部に配置するJTableの高さは、常に同じになるので、VerticalScrollBarBoundedRangeModelを共有

参考リンク

コメント