コンストラクター メソッド JTable(TableModel) でテーブルを作成したいと思います。各列のタイトルを表示するには、TableModel のどの正確なメソッドが必要ですか?
4 に答える
JTable
内に埋め込む必要がJScrollPane
あり、列見出しが自動的に表示されます。
JScrollPane sp = new JScrollPane(new JTable());
たとえば、クラスAbstractTableModelを拡張するか、 DefaultTableModelを使用して、 TableModelを実装する必要があります。これには後で、列の数と名前を設定できるコンストラクターがあります。
必要な列名を返すには、 TableModelインターフェイスにgetColumnNameメソッドを実装する必要があります。
TableModel の Javadoc から:
String getColumnName(int columnIndex) columnIndex
の列の名前を返します。これは、テーブルの列ヘッダー名を初期化するために使用されます。
編集:
抽象クラスAbstractTableModelは、インターフェイスTableModelのほとんどのメソッドの実装を提供し、インターフェイスTableModelのgetColumnNameメソッドのデフォルトの実装も提供します(ただし、列名を A、B として返すため、目的に合わない場合があります)。
AbstractTableModelをサブクラス化して独自の TableModel を作成し、抽象メソッドの実装を提供してgetColumnNameメソッドをオーバーライドします。たとえば、次のようなことを試すことができます。
class MyTableModel extends AbstractTableModel {
private List<String> rowData; // say
private List<String> columnNames;
MyTableModel(List<String> data,List<String> names) {
rowData = data;
columnNames = names;
}
// provide implementation of abstract methods
public int getRowCount() {...}
public int getColumnCount() {...}
public Object getValueAt(int row, int column) {...}
@Override
public String getColumnName(int pCol) {
return columnNames.get(pCol);
}
...
}
// create your table as below;
List<String> data = new ArrayList<String>();
data.add("Test");
data.add("Try");
List<String> colNames = new ArrayList<String>();
colNames.add("Name");
MyTableModel model = new MyTableModel(data,colNames);
JTable myTable = new JTable(model);
あなたが本当に探しているのは、クラスDefaultTableModelだと思います。ドキュメントを読むだけで、自分の道を歩むことができます。