JTable
편집 불가능 하게 만드는 방법 ? 사용자가 셀의 값을 두 번 클릭하여 편집 할 수 없도록하고 싶습니다.
답변
당신은을 사용할 수 있습니다 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());
답변
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);
그것은 나를 위해 잘 작동합니다.
답변
값 집합 ( “new JTable (Vector, Vector)”사용)에서 TableModel을 자동으로 생성하는 경우 열에서 편집기를 제거하는 것이 더 쉬울 수 있습니다.
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
}
편집자가 없으면 데이터를 편집 할 수 없습니다.
답변
나는 이것을 사용했고 그것은 효과가 있었다 : 그것은 매우 간단하고 잘 작동한다.
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()));