JavaでJTableのテーブルヘッダーを表示/非表示にする方法
JTableは、JComponentクラスのサブクラスであり、複雑なデータ構造を表示するためのSwingコンポーネントです。JTableはMVC(Model View Controller)デザインパターンに従っており、データを行と列の形式で効率的に表示できます。
DefaultTableModelクラスはAbstractTableModelのサブクラスで、JTableに対して行や列を動的に追加する際に利用されます。また、DefaultTableCellRendererクラスはJLabelクラスを継承しており、テーブルのセル内に画像や色付きのテキストなどを表示するカスタマイズにも対応しています。
JTableのテーブルヘッダーの表示・非表示を切り替えるには、JCheckBoxを活用するのが簡単です。チェックボックスのチェックを外せばヘッダーが非表示になり、チェックを入れれば再び表示されるという仕組みです。具体的には、JTableをラップしているJScrollPaneのgetColumnHeader()メソッドで取得したヘッダーコンポーネントのsetVisible()を呼び出すことで実現できます。
コード例
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public final class JTableHeaderHideTest extends JPanel {
private final String[] columnNames = {"String", "Integer", "Boolean"};
private final Object[][] data = {{"Tutorials Point", 100, true}, {"Tutorix", 200, false},
{"Tutorials Point", 300, true}, {"Tutorix", 400, false}};
private final TableModel model = new DefaultTableModel(data, columnNames) {
@Override
public Class<?> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
};
private final JTable table = new JTable(model);
private final JScrollPane scrollPane = new JScrollPane(table);
public JTableHeaderHideTest() {
super(new BorderLayout());
add(scrollPane);
JCheckBox check = new JCheckBox("JTableHeader visible: ", true);
check.addActionListener(ae -> {
JCheckBox cb = (JCheckBox) ae.getSource();
scrollPane.getColumnHeader().setVisible(cb.isSelected());
scrollPane.revalidate();
});
add(check, BorderLayout.NORTH);
}
public static void main(String[] args) {
JFrame frame = new JFrame("JTableHeaderHide Test");
frame.setSize(375, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JTableHeaderHideTest());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
実行結果
ヘッダー表示時

チェックボックスがオンの状態では、列名(String、Integer、Boolean)を含むテーブルヘッダーが通常どおり表示されます。
ヘッダー非表示時

チェックボックスをオフにすると、テーブルヘッダーが隠れ、データ行のみが表示されます。このように、わずか数行のコードでヘッダーの表示制御を実装できるため、ユーザーが画面スペースを調整したい場合などに便利なテクニックです。
-
JavaでJComboBoxの項目をソートする方法!DefaultComboBoxModelのカスタマイズ例
JComboBoxはJComponentクラスのサブクラスであり、テキストフィールドと、ユーザーが値を選択できるドロップダウンリストを組み合わせたSwingコンポーネントです。ユーザーがコンボボックスを操作すると、ActionListener、ChangeListener、ItemListenerといったインターフェースを通じてイベントを受け取ることができます。 ただし、標準のJComboBoxにはアイテムを並べ替える(ソートする)機能は用意されていません。そこで本記事では、DefaultComboBoxModelクラスを継承した独自のモデルクラスを作成し、コンボボックスの項目を常に整序された
-
JavaでJTableのヘッダー(JTableHeader)にワードラップを実装する方法
JTableHeaderとはJTableHeaderは、JComponentクラスのサブクラスです。JTableオブジェクトを生成すると、コンストラクタが自動的に新しいJTableHeaderオブジェクトを作成し、テーブルコンポーネントのヘッダーを管理します。JTableHeaderオブジェクトはテーブルのカラムモデル(column model)と関連付けられており、これによりUIデリゲートが列のドラッグ操作や各列のヘッダーセルの描画を行えるようになっています。JTableクラスは、テーブルヘッダーとしてJTableHeaderオブジェクトを設定するためのsetTableHeader()メソッ