3

分割したいグループ化された列の3つのセクションを持つJTable(またはより正確にはJXTable)があります。以前は、プログラムでリンクした 3 つのテーブルがありました (スクロールバーの位置、並べ替え、選択)。これをリンクするために多くのコードを使用しましたが、これを取り除きたいです。このテーブルクラスにはもっと良いものがいくつかあるので、今は1つのJXTableに切り替えています。

ほぼ同じ問題に対するいくつかの(あまり満足のいくものではない)解決策を見つけました。誰かが私に良い提案をしてくれるかもしれません。

オプション 1: 仕切りとして空の列 (グレーなどの別の色) を使用し、矢印またはタブ キーを使用するときにプログラムでこの空の列を飛び越えます。

オプション 2: 1 列の 1 辺だけのマージンをより大きなサイズに設定して、仕切りのように見えます。今まで、すべての列の余白を設定する方法しか知りませんでした

オプション 3: 再び 3 つの個別のテーブルに戻ります (特に、個別のセクションで列を繰り返したくないため、テーブルを同じ方法で並べ替えるのは大変な作業です)。これは、目に見えない列でソートして、テーブルソーターを書き直す必要があることを意味します。

どんな提案でも大歓迎です (3 つの選択肢のどれにも当てはまらない場合も)

4

1 に答える 1

4

3列目のセルレンダラーをオーバーライドして、右の太い境界線を持ち、他の境界線を持たないようにすることで、目的に似たものを作成しました。テーブルの列ヘッダー内で同じことを行って、境界線をそこまで延長することができます。明らかにセル内に境界線を配置していますが、これで十分かもしれません。

  {
    ....
    table.getColumnModel().getColumn(2).setCellRenderer(
        new ThickRightBorderCellRenderer());
    ....
  }

  private static class ThickRightBorderCellRenderer
          extends DefaultTableCellRenderer {

    @Override
    public Border getBorder() {
      return BorderFactory.createMatteBorder(0, 0, 0, 3, Color.BLACK);
    }
  }

例

于 2012-01-03T13:41:00.370 に答える