Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJTableの列の並べ替えを無効にする方法

JTableJComponentクラスのサブクラスであり、情報を複数の行と列で表示するテーブルを作成するために使用されます。JTableから値が選択されると、TableModelEventが生成され、TableModelListenerインターフェースを実装することでこのイベントを処理できます。

デフォルトでは、JTableの列はユーザーがドラッグ&ドロップで自由に並べ替えられるようになっています。しかし、アプリケーションの仕様によっては、ユーザーに列の順序を変更させたくない場合もあります。そのような場合は、table.getTableHeader().setReorderingAllowed()メソッドを使用し、引数にfalseを指定することで、列の並べ替えを無効にできます。

また、併せてsetResizingAllowed(false)を設定すれば、ユーザーによる列幅の変更も禁止することが可能です。

コード例

import java.awt.*;
import javax.swing.*;

public final class JTableColumnReorderingTest extends JFrame {
    JTable table;
    JScrollPane scrollPane;

    public JTableColumnReorderingTest() {
        setTitle("JTableColumnReordering Test");
        String[] columnNames = {"名前", "電話番号", "コース"};
        Object[][] data = {
            {"Raja", "123456789", "Java"},
            {"Adithya", "456123789", ".Net"},
            {"Vineet", "789456123", "JavaScript"},
            {"Archana", "987456321", "Python"},
            {"Krishna", "321456987", "Scala"},
            {"Jai", "456321789", "ServiceNow"}
        };
        table = new JTable(data, columnNames);
        scrollPane = new JScrollPane(table);

        // 列の並べ替えを許可しない
        table.getTableHeader().setReorderingAllowed(false);
        // 列幅の変更も許可しない
        table.getTableHeader().setResizingAllowed(false);

        add(scrollPane);
        setSize(375, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new JTableColumnReorderingTest();
    }
}

実行結果

上記のコードを実行すると、以下のようなウィンドウが表示されます。ヘッダーをドラッグしても列の順序は変更されません。

JavaでJTableの列の並べ替えを無効にする方法

ポイントまとめ

  • setReorderingAllowed(false):テーブルヘッダーのドラッグによる列の並べ替えを禁止します。
  • setResizingAllowed(false):マウス操作による列幅の変更を禁止します。
  • これらの設定はJTableHeaderに対して行うため、table.getTableHeader()経由で呼び出す必要があります。
  1. JavaでJComboBoxの項目をソートする方法!DefaultComboBoxModelのカスタマイズ例

    JComboBoxはJComponentクラスのサブクラスであり、テキストフィールドと、ユーザーが値を選択できるドロップダウンリストを組み合わせたSwingコンポーネントです。ユーザーがコンボボックスを操作すると、ActionListener、ChangeListener、ItemListenerといったインターフェースを通じてイベントを受け取ることができます。 ただし、標準のJComboBoxにはアイテムを並べ替える(ソートする)機能は用意されていません。そこで本記事では、DefaultComboBoxModelクラスを継承した独自のモデルクラスを作成し、コンボボックスの項目を常に整序された

  2. JavaでJTableのヘッダー(JTableHeader)にワードラップを実装する方法

    JTableHeaderとはJTableHeaderは、JComponentクラスのサブクラスです。JTableオブジェクトを生成すると、コンストラクタが自動的に新しいJTableHeaderオブジェクトを作成し、テーブルコンポーネントのヘッダーを管理します。JTableHeaderオブジェクトはテーブルのカラムモデル(column model)と関連付けられており、これによりUIデリゲートが列のドラッグ操作や各列のヘッダーセルの描画を行えるようになっています。JTableクラスは、テーブルヘッダーとしてJTableHeaderオブジェクトを設定するためのsetTableHeader()メソッ