概要

JTableの罫線の表示非表示とセルの内余白を変更します。

サンプルコード

add(new JCheckBox(new AbstractAction("setShowVerticalLines") {
  @Override public void actionPerformed(ActionEvent e) {
    Dimension d = table.getIntercellSpacing();
    if (((JCheckBox) e.getSource()).isSelected()) {
      table.setShowVerticalLines(true);
      table.setIntercellSpacing(new Dimension(1, d.height));
    } else {
      table.setShowVerticalLines(false);
      table.setIntercellSpacing(new Dimension(0, d.height));
    }
  }
}));
add(new JCheckBox(new AbstractAction("setShowHorizontalLines") {
  @Override public void actionPerformed(ActionEvent e) {
    Dimension d = table.getIntercellSpacing();
    if (((JCheckBox) e.getSource()).isSelected()) {
      table.setShowHorizontalLines(true);
      table.setIntercellSpacing(new Dimension(d.width, 1));
    } else {
      table.setShowHorizontalLines(false);
      table.setIntercellSpacing(new Dimension(d.width, 0));
    }
  }
}));
view all

解説

JTableの罫線を非表示にしてもセルの内余白が0でない場合、セル選択でその内余白分の塗り残しが発生し、セルが分割されているような表示になります。上記のサンプルでは、JTable#setShowVerticalLines(boolean)などと一緒に、JTable#setIntercellSpacing(Dimension)で余白を0に切り替えています。

  • 罫線の設定
    • JTable#setShowVerticalLines(boolean);
    • JTable#setShowHorizontalLines(boolean);
  • セル内余白の設定
    • JTable#setIntercellSpacing(Dimension intercellSpacing);
      • JTable#setRowMargin(intercellSpacing.height);
      • JTable#getColumnModel().setColumnMargin(intercellSpacing.width);

コメント