Java Swingの高度なコンポーネント-テーブルコンポーネント

スイングテーブルコンポーネント

テーブルは、データ統計の最も一般的に使用される形式の1つであり、日常生活で統計を収集するためにしばしば必要になります。テーブルは、Java SwingのJTableクラスによって実装されます。

1つは、テーブルを作成する

JTableクラスのデフォルトの構築メソッドに加えて、指定されたテーブル列名配列とテーブルデータ配列を使用してテーブルを作成する構築メソッドも提供します。

JTable table = new JTable(Object[][] rowData, Object[] columnNames);

rowData:カプセル化されたテーブルデータの配列。
columnNames:カプセル化されたテーブルの列名の配列。

テーブルを使用する場合、通常はスクロールパネルに追加され、次にスクロールパネルが対応する位置に追加されます。
構築メソッド「JTable table = new JTable(Object [] [] rowData、Object [] columnNames)」を使用してテーブルを作成します。完全なコードは次のとおりです。

package study.czm;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class Study {
    
    

	public static void main(String[] args) {
    
    

		JFrame jf = new JFrame();
		jf.setTitle("表格组件");
		jf.setSize(240, 150);
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
		Container c = jf.getContentPane();

		String[] columnNames = {
    
     "姓名", "年龄" };// 定义表格列名数组
		String[][] rowData = {
    
     {
    
     "小明", "12" }, {
    
     "小红", "13" }, {
    
     "小绿", "22" }, {
    
     "小刚", "92" }, {
    
     "小西", "17" } };// 定义表格数据数组
		JTable table = new JTable(rowData, columnNames);// 创建指定列名和数据的表格
		JScrollPane scrollPane = new JScrollPane(table);// 创建显示表格的滚动面板
		c.add(scrollPane, BorderLayout.CENTER);

		jf.setVisible(true);

	}
}

実行結果:
ここに画像の説明を挿入

第二に、カスタムフォーム

テーブルが作成された後、それを特定の状況に適用するには、一連の定義が必要です。

JTableでテーブルを定義するために使用される一般的なメソッド

方法 説明
setRowHeight(int rowHeight) テーブルの行の高さを設定します。デフォルトは16ピクセルです
setRowSelectionAllowed(boolean sa) テーブル行の選択を許可するかどうかを設定します。デフォルトは選択を許可し、falseに設定すると選択が許可されません。
setSelectionMode(int sm) テーブル行の選択モードを設定します
setSelectionBackground(Color bc) テーブルの選択した行の背景色を設定します
setSelectionForeground(カラーfc) テーブルの選択した行の前景色を設定します(通常はテキストの色を設定します)
setAutoResizeMode(intモード) テーブルの自動調整モードを設定します

setSelectionMode(int sm)メソッドを使用してテーブルの選択モードを設定する場合、そのモードはListSelectionModelクラスの静的定数から選択できます。

ListSelectionModelクラスで選択モードを設定するために使用される静的定数

静的定数 代表的なモード
SINGLE_SELECTIOM 1つだけ選択できるようにする
SINGLE_INTERVAL_SELECTION 行の複数選択を許可する
MULTIPLE_INTERVAL_SELECTION 複数選択できます

setAutoResizeMode(int mode)メソッドを使用してテーブルの自動調整モードを設定する場合、JTableクラスの静的定数で選択できます。

JTableクラスで自動調整モードを設定するために使用される静的定数

静的定数 自動調整モード
AUTO_RESIZE_OFF 水平スクロールバーを使用するには自動調整をオフにする必要があります
AUTO_RESIZE_NEXT_COLUMN 次の列の幅のみを調整する
AUTO_RESIZE_SUBSEQUENT_COLUMNS 後続のすべての幅をデフォルト設定に比例して調整します
AUTO_RESIZE_LAST_COLUMN 最後の列の幅のみを調整します
AUTO_RESIZE_ALL_COLUMNS テーブルのすべての列の幅を比例的に調整する

3、テーブルを操作する

テーブルを使用するプログラムを作成する場合、テーブルの行数や列数など、テーブルに関するいくつかの情報を取得する必要があることがよくあります。

getRowCount():テーブルの行数を取得します。戻り値はint型です。
getColumnCount():テーブルの列数を取得し、戻り値はint型です。
getColumnName(int column):指定されたインデックス位置にある列の名前を取得します。戻り値はStringです。

テーブルの選択された行を操作するためにJTableクラスでよく使用されるメソッド

方法 説明
setRowSelectionInterval(int from、int to) fromからtoまでのすべての行(fromおよびtoを含む)の選択された行インデックス
addRowSelectionInterval(int from、int to) テーブルの選択された行としてfromからtoまでの行インデックスを持つすべての行を追加します
isRowSelected(int row) 行インデックスが行である行が選択されているかどうかを確認します
すべて選択() テーブルのすべての行を選択します
明確な選択() 選択したすべての行の選択状態をキャンセルします
getSelectedRowCount() テーブルで選択されている行の数を取得します。戻り値はint型で、行が選択されていない場合は-1を返します
getSelectedRow() 選択した行の最小の行インデックス値を取得します。戻り値はint型で、行が選択されていない場合は-1を返します
getSelectedRows() 選択されたすべての行のインデックス値を取得します。戻り値はint型の配列です

注:テーブルのインデックス値は、配列のインデックス値と同じで、0から始まり、最初の行のインデックス値は0、2番目の行は1です。

4、テーブルモデルとテーブル

1.テーブルモデルを使用してテーブルを作成する

テーブルモデルを使用してテーブルを作成します。コードは次のとおりです。

package study.czm;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Study {
    
    

	public static void main(String[] args) {
    
    

		JFrame jf = new JFrame();
		jf.setTitle("表格组件");
		jf.setSize(240, 150);
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
		Container c = jf.getContentPane();

		String[] columnNames = {
    
     "姓名", "年龄" };// 定义表格列名数组
		String[][] rowData = {
    
     {
    
     "小明", "12" }, {
    
     "小红", "13" }, {
    
     "小绿", "22" }, {
    
     "小刚", "92" }, {
    
     "小西", "17" } };// 定义表格数据数组
		DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames);// 创建指定表格列名和表格数据的表格模型
		JTable table = new JTable(tableModel);// 创建指定表格模型的表格
		JScrollPane scrollPane = new JScrollPane(table);// 创建显示表格的滚动面板
		c.add(scrollPane, BorderLayout.CENTER);

		jf.setVisible(true);

	}
}

実行結果:
ここに画像の説明を挿入

2.テーブルモデルを維持する

テーブルモデルを維持する主な方法:

方法 説明
addRow(Object [] rowData) 配列によってカプセル化されたデータをテーブルモデルの最後に追加します。
addRow(Vector rowData) ベクトルによってカプセル化されたデータをテーブルモデルの最後に追加します。
insertRow(int row、Object [] rowData) 配列によってカプセル化されたデータを、テーブルモデルの指定されたインデックス位置に追加します。
insertRow(int row、Vector rowData) ベクトルによってカプセル化されたデータを、テーブルモデルの指定されたインデックス位置に追加します。
setValueAt(Object aValue、int row、int column) テーブルモデルで指定されたセルのデータを変更します。aValueは変更された値、rowはセルの行インデックス、columnはセルの列インデックスです
getValueAt(int行、int列) 指定したセルの値を取得します。戻り値はオブジェクト型です
removeRow(int row) 指定したセルのデータを削除します。行は削除する行のインデックスです

おすすめ

転載: blog.csdn.net/javanofa/article/details/105917661