回答:
を使用できますTableModel
。
次のようなクラスを定義します。
public class MyModel extends AbstractTableModel{
//not necessary
}
実際にisCellEditable()
はfalse
デフォルトなので、省略してもかまいません。(参照:http : //docs.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html)
次に、のsetModel()
メソッドを使用しますJTable
。
JTable myTable = new JTable();
myTable.setModel(new MyModel());
public void
メソッドにブール値を返すことはできません。
isCellEditable
たとえば、メソッドisCellEditableをオーバーライドして、必要に応じて実装できます。
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
または
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//Only the third column
return column == 3;
}
};
table.setModel(tableModel);
JTableが消えた場合の注意
これJTable
を使用するときにあなたが消えている場合は、DefaultTableModel(Object[][] data, Object[] columnNames)
代わりにコンストラクタを使用する必要があるためです。
//instance table model
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
table.setDefaultEditor(Object.class, null);
追加するだけ
table.setEnabled(false);
私にとってはうまくいきます。
一連の値からTableModelを自動的に作成する場合( "new JTable(Vector、Vector)"を使用)、おそらく列からエディターを削除する方が簡単です。
JTable table = new JTable(my_rows, my_header);
for (int c = 0; c < table.getColumnCount(); c++)
{
Class<?> col_class = table.getColumnClass(c);
table.setDefaultEditor(col_class, null); // remove editor
}
エディターがないと、データは編集できません。
new JTable(Vector, Vector)
でテーブルを作成し、私のために働いていました。セルに編集者はいらないので、投票してください。
私はこれを使用しましたが、うまくいきました。非常にシンプルで問題なく動作します。
JTable myTable = new JTable();
myTable.setEnabled(false);
新しいDefaultCellEditorクラスを作成します。
public static class Editor_name extends DefaultCellEditor {
public Editor_name(JCheckBox checkBox) {
super(checkBox);
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return false;
}
}
そしてsetCellEditorを使用します:
JTable table = new JTable();
table.getColumn("columnName").setCellEditor(new Editor_name(new JCheckBox()));