잘 작동하는 jTable 캘린더가 있는데 사용자가 아무 것도 수정할 수 없도록하고 싶습니다. 내가 어떻게 해?JAVA jTable - 모든 셀을 편집 할 수 없도록 만드는 방법은 무엇입니까?
감사합니다.
추신 : 저는 netbeans 6.9를 사용합니다.
잘 작동하는 jTable 캘린더가 있는데 사용자가 아무 것도 수정할 수 없도록하고 싶습니다. 내가 어떻게 해?JAVA jTable - 모든 셀을 편집 할 수 없도록 만드는 방법은 무엇입니까?
감사합니다.
추신 : 저는 netbeans 6.9를 사용합니다.
간단히 (AbstractTableModel가 확장되는) 테이블 모델에의 TableModel
의)합니다 (의 isCellEditable에서 구현을 false
을 반환, 당신은 같은 구현해야합니다
public class MyTableModel extends AbstractTableModel {
//table is not editable
public boolean isCellEditable() {
return false;
}
}
이것은 좋은 해결책입니다. 그러나 TableModel은 실제로 Cristian의 코드에서 DefaultTableModel을 확장 할 수 있습니다. 일반적으로 DefaultTableModel을 확장 할 수있을 때 AbstractTableModel을 확장해야하는 좋은 이유는 없습니다. – jzd
잘, 일반적으로 당신이 자신의 데이터 형식을 지정할 수 없기 때문에 DefaultTableModel을 사용하지 않습니다. 더 중요한 것은 짜증나게 할 수있는 것을 저장하는 벡터 벡터를 사용한다는 것입니다. 하지만 예전의 편의를 위해, DefaultTableModel은 대부분의 구현을 제공하기 때문에 작은 작업에 더 쉬운 선택입니다! 개인적으로, 나는 그것을 피한다. –
시도를 이 코드; 간단하고 이해하기 쉽습니다.
DefaultTableModel model =new DefaultTableModel(6,8);
table = new JTable(model){
private static final long serialVersionUID = 2485117672771964339L;
@Override
public boolean isCellEditable (int row, int column)
{
return editable;
}
};
'JTAble' 대신'JTable'을 사용해야합니까? –
고마워. – Alejandro
좋아, 어쩌면이 새로운 기능입니다,하지만 난 사용할 수 있다는 것을 발견
JTable table = new JTable();
...
table.setEnabled(false);
그리고 그것은 나를 위해 일을했다.
model.cellEditable! = view.enabled – kleopatra
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
@Matthew - 이것을 구현하려고하면 테이블이 사라집니다. 내 테이블이 JScrollPane에 있는지가 중요합니까? 이처럼 : 'JScrollPane editPatDocScrollPane = new JScrollPane(); JTable editPatDocTable = 새 JTable (data, columnNames); editPatDocScrollPane.setViewportView (editPatDocTable); ' – Jona
@Jona 그 이유가 무엇인지 알아 내지 못합니다. 세포는 아직 거기에 있습니다, 그들은 단지 읽기 전용입니다. 자신의 상황에 도움이 필요하면, 사라지는 테이블을 보여주는 자진적인 예제를 사용하여 새로운 질문을 열 것을 제안합니다. –
나는 똑같은 문제가 있었다. 내가 한 일은 JTable 테이블 = 새로운 JTable (data, columnNames); 및 setModel. 그러나 그것은 당신의 데이터와 columnNames를 오버라이드합니다! 따라서 data 및 columnNames로 defaultTableModel을 초기화 한 다음 JTable에 전달해야합니다. – Lyth
사람들이 값을 클릭하여 변경하는 것을 방지합니다. 그것은 아마도 사람들이 조건문을 검사 할 때 파일에 다시 데이터를 저장하지 못하게합니다. –
내가 물어 보자. JTable 모델을 구현하는 경우 기본적으로 2 차원 배열을 검색 할 메서드를 만듭니다. 따라서 isCellEditable = false로 설정하면 배열에 데이터를 다시 쓰지 않을 것입니다. 그리고 save 버튼을 클릭하면 JTable의 새로운 정보가 객체 배열에 쓰이거나 키에 키리스트가있는 것입니다. 키가 변경되면 새 값이 작성됩니다. 이 시점에서 상자에서 클릭하고 값을 변경할 수 없도록하려면 어떻게해야합니까? –