JavaでJTableを特定の列基準でソートする方法
JTableは、複雑なデータ構造を表形式で表示するためのJComponentクラスのサブクラスです。JTableコンポーネントはMVC(Model View Controller)デザインパターンに従って設計されており、データを行と列の形式で効率的に表示できます。
また、JTableはTableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListenerなど、さまざまなリスナーインターフェースを利用できる柔軟なコンポーネントです。
JTableを特定の列でソートする手順
JTableを特定の列で並べ替えるには、JTableクラスが提供するsetAutoCreateRowSorter()メソッドを使用し、引数にtrueを設定します。このメソッドを呼び出すことで、実行時に列ヘッダーをクリックするだけで、昇順・降順の自動ソート機能が有効になります。
コード例
import java.awt.*;
import javax.swing.*;
public final class JTableSorterTest extends JFrame {
private JTable table;
private JScrollPane scrollPane;
public JTableSorterTest() {
setTitle("JTableHeaderHide Test");
String[] columnNames = {"Name", "Age", "City"};
Object[][] data = {{"Raja", "35", "Hyderabad"}, {"Adithya", "25", "Chennai"}, {"Vineet", "23", "Mumbai"}, {"Archana", "32", "Pune"}, {"Krishna", "30", "Kolkata"}};
table = new JTable(data, columnNames);
scrollPane = new JScrollPane(table);
table.setAutoCreateRowSorter(true); // 特定の列を基準に行をソートする
add(scrollPane, BorderLayout.CENTER);
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JTableSorterTest();
}
}
実行結果

補足:より高度なソート制御について
setAutoCreateRowSorter(true)は手軽な方法ですが、ソート条件を細かくカスタマイズしたい場合は、TableRowSorterを明示的に生成してJTableに設定する方法も有効です。たとえば、数値列を文字列としてではなく数値として正しく比較したい場合や、特定の列だけソートを無効化したい場合には、Comparatorを指定したりsetSortable(false)を呼び出したりすることで柔軟に対応できます。
-
JavaのJTableで各列の幅を変更する方法をわかりやすく解説
Java Swingで表形式のデータを扱う際、デフォルトの列幅では文字が切れてしまったり、レイアウトが崩れたりすることがあります。本記事では、JTableの各列の幅を自由に変更する方法を、基本の特徴からサンプルコードまで詳しく解説します。 JTableとは JTableは、複雑なデータ構造を表示するためのJComponentのサブクラスです。 MVC(Model View Controller)デザインパターンに基づいて設計されており、データを行と列の形式で表示できます。 DefaultTableModelクラスはAbstractTableModelを拡張したクラスで、JTableに対して行
-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー