Java は、Java の Swing API コンポーネントを使用してグラフィカル ユーザー インターフェイスを開発するときにテーブルを作成できる JTable と呼ばれる便利なクラスを提供します。ユーザーにデータの編集を許可したり、データの表示のみを許可したりできます。テーブルには実際にはデータが含まれていないことに注意してください。これは純粋に表示メカニズムです。
注: 他の Swing GUI と同様に、JTable を表示するコンテナを作成する必要があります。
配列を使用したテーブル データの格納
JTable クラスにデータを提供する簡単な方法は、2 つの配列を使用することです。最初の配列は列名を String 配列に保存します。
1 2 |
|
2 番目の配列は、テーブルのデータを保存するために使用される 2 次元のオブジェクト配列です。たとえば、この配列には 6 人のオリンピック水泳選手が含まれています。
1 2 3 4 5 6 7 8 |
|
ここで重要なのは、両方の配列の列数が同じであることを確認することです。
JTable の構築
データを取得したら、テーブルを作成するのは簡単な作業です。 JTable コンストラクターを呼び出して、2 つの配列を渡すだけです。
1 |
|
ユーザーがすべてのデータを確実に確認できるように、スクロール バーを追加することもできます。これを行うには、その JTable を JScrollPane に配置します。
1 |
|
テーブルが表示されると、データの列と行が表示され、上下にスクロールできます。
JTable オブジェクトは対話型のテーブルを提供します。任意のセルをダブルクリックすると、内容を編集できます。ただし、編集は GUI にのみ影響し、基になるデータには影響しません。 (データへの変更を処理するには、イベント リスナーを実装する必要があります。)
列の幅を変更するには、列ヘッダーの端にマウスを置き、前後にドラッグします。列の順序を変更するには、列見出しをクリックしたまま、新しい場所にドラッグします。
列の並べ替え
行を並べ替える機能を追加するには、 setAutoCreateRowSorter メソッドを呼び出します。
1 |
|
このメソッドが true に設定されている場合、次のことができます。列ヘッダーをクリックすると、その列の下のセルの内容に基づいて行が並べ替えられます。
テーブルの外観を変更する
グリッド線の表示/非表示を制御するには、次の setShowGrid メソッドを使用します。
1 |
|
テーブルの色を指定するには、setBackground メソッドと setGridColor メソッドを使用してください:
1 2 |
|
デフォルトでは、テーブルの列幅は同じです。テーブルが入っているコンテナのサイズが変更可能な場合、列の幅が伸縮し、コンテナが大きくなったり小さくなったりします。ユーザーが列のサイズを変更すると、新しい列のサイズに合わせて右側の列の幅が変更されます。
setPreferredWidth メソッドまたは列を使用して、初期列幅を設定できます。 TableColumn クラスを使用して最初に列への参照を取得し、次に setPreferredWidth メソッドを使用してサイズを設定します。
1 2 3 4 |
|
Select row
デフォルトでは、ユーザーは次のことを実行できます。次の 3 つの方法のいずれかでこれを実行します。 1. テーブルの行を選択します。
単一の行を選択するには、その行内のテーブルのセルをクリックします。
連続する複数の行を選択するには、複数の行上でマウスをドラッグするか、Shift Cell を押しながら表のセルをクリックします。
連続していない複数の行を選択するには、Ctrl キー (Mac では Command キー) を押したままテーブルのセルをクリックします。
テーブル モデルの使用
編集可能な単純な文字列ベースのテーブルが必要な場合は、テーブル データとして複数の配列を使用すると便利です。作成したデータ配列を見ると、そこに含まれる他のデータ型は文字列です。Place 列には int が含まれ、World Record 列にはブール値が含まれています。ただし、両方の列は文字列として表示されます。この動作を変更するには、テーブル モデルを作成します。
テーブルモデルは、テーブルに表示するデータを管理します。テーブル モデルを実装するには、AbstractTableModel クラスを拡張するクラスを作成できます。
1 2 3 4 5 6 7 8 |
|
上記の 6 つのメソッドは、このステップバイステップ ガイドで使用されるメソッドですが、AbstractTableModel クラスはさらに多くのメソッドを定義しています。オブジェクト内の JTable データを操作するために使用できます。 AbstractTableModel を使用するようにクラスを拡張する場合、実装する必要があるのは getRowCount、getColumnCount、および getValueAt メソッドのみです。
上記の 5 つのメソッドを実装する新しいクラスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
この例では、ExampleTableModel クラスがテーブル データを含む 2 つの文字列を保持するのが理にかなっています。次に、getRowCount、getColumnCount、getValueAt、および getColumnName メソッドは、配列を使用してテーブルの値を提供できます。また、最初の 2 つの列の編集を無効にするために isCellEditable メソッドがどのように記述されているかにも注意してください。
これで、JTable では、2 つの配列を使用してオブジェクトを作成する代わりに、次の ExampleTableModel クラスを使用できるようになります:
1 |
|
コードを実行すると、JTable オブジェクトがテーブル モデルを使用していることがわかります。テーブルがないため、セルは編集可能であり、列名は正しく使用されます。 getColumnName メソッドが実装されていない場合、テーブル上の列名は、A、B、C、D などのデフォルト名として表示されます。
我们现在考虑一下该方法 getColumnClass。仅这一点使得表模型值得实现,因为它为JTable对象提供了每列中包含的数据类型。如果您还记得,对象数据数组有两列不是String数据类型:Place包含int的World Record列和包含的列booleans。了解这些数据类型会更改JTable对象为这些列提供的功能。运行带有表模型的示例表代码意味着该World Record列实际上将是一系列复选框。
添加ComboBox编辑器
您可以为表中的单元格定义自定义编辑器。例如,您可以使组合框替换字段的标准文本编辑。
以下是使用JComboBoxcountry字段的示例 :
1 2 3 4 |
|
要设置country列的默认编辑器,请使用TableColumn该类获取对country列的引用,并使用该setCellEditor方法将该列设置JComboBox为单元格编辑器:
1 2 |
|
以上がJTable を使用して Java テーブルを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。