본문 바로가기

03. Development/00. JAVA

Swing JTable사용법 및 편집 못하게 막기

JTable에 대한 사용법은 여기에 있습니다.
http://jfx.wikia.com/wiki/SwingComponents#Table

그 외에 작년에 preview버전에서 구현한 것 같은 소스도 있군요.
http://www.jroller.com/peter_pilgrim/entry/javafx_reintroduce_swing_jtable

Java에서 사용하는 방법이랑 같은 방법으로 하는군요.
근데, JTable에서는 기본적으로는 편집이 가능하게 되어있습니다.
JTable에서 Model을 구현하는데, AbstractTableModel를 상속받아 구현한 모델을 JTable에 적용하는 방법이 있구요. 기본적인 Table기능만 있으면 되면 DefaultTableModel을 이용하는 것 같습니다.
Java에서 편집이 안되게 막으려면 아래와 같은 방법으로 하면 됩니다.
 
mod = new DefaultTableModel(data,title) {  
public boolean isCellEditable(int rowIndex, int mColIndex) {  
return false;  
}  
};  

출처: http://nkdk.tistory.com/entry/%EC%9E%90%EB%B0%94-jtable-%EC%97%B4-%EC%A1%B0%EC%A0%95-%EC%95%88%EB%90%98%EA%B3%A0-%EB%82%B4%EC%9A%A9-%EC%88%98%EC%A0%95-%EB%AA%BB%ED%95%98%EA%B2%8C-%ED%95%98%EA%B8%B0




저 문법을 JavaFX에 적용하려고 하니까-_- 안되더군요-_-
그래서 상속받아서 해결했습니다.

DefaultTableModel을 상속받은 MyTableModel
 
public class MyTableModel extends DefaultTableModel { 
 
    override function isCellEditable(row:Integer, col:Integer): Boolean { 
        return false; 
    } 
} 

사용시에는
 
model = MyTableModel {} 
model.addColumn("name"); 
table.setModel(model); 

이렇게 하면 편집 불가능한 JTable을 만들 수 있습니다.