• category: swing folder: RemoveTableHeader title: JTableHeaderを非表示にする tags: [JTable, JTableHeader, JScrollPane] author: aterai pubdate: 2010-11-01T15:50:29+09:00 description: JTableでJTableHeaderを表示するかどうかを、動的に切り替えます。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTRpYOxz3I/AAAAAAAAAhg/7HdNawHaulI/s800/RemoveTableHeader.png hreflang:
       href: https://java-swing-tips.blogspot.com/2016/03/how-to-hide-jtableheader.html
       lang: en

概要

JTableJTableHeaderを表示するかどうかを、動的に切り替えます。

サンプルコード

final JScrollPane scrollPane = new JScrollPane(table);
// scrollPane.setColumnHeader(new JViewport()); // Dummy JViewport
JCheckBox check = new JCheckBox("JTableHeader visible: ", true);
check.addActionListener(new ActionListener() {
  @Override public void actionPerformed(ActionEvent e) {
    JCheckBox cb = (JCheckBox) e.getSource();
    // table.getTableHeader().setVisible(cb.isSelected());
    scrollPane.getColumnHeader().setVisible(cb.isSelected());
    scrollPane.revalidate();
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JTableを配置したJScrollPaneJScrollPane#getColumnHeader().setVisible(boolean)メソッドを使って、JTableHeaderの表示、非表示を変更しています。

  • table.setTableHeader(null)でヘッダを削除、table.setTableHeader(new JTableHeader(table.getColumnModel()))で復元する方法もある
  • 以下のように、サイズ0ColumnHeaderを設定して非表示に見せかけることも可能
scroll.setColumnHeader(new JViewport() {
  @Override public Dimension getPreferredSize() {
    return new Dimension();
  }
});

参考リンク

コメント