본문 바로가기
TechNical/JAVA

JTable 이것저것 거시기

by 강멍멍이 2009. 3. 2.
반응형
JTable 이것저것 어떻게 써 먹나 모음이야.

JTable 크기는 정해져 있고.. 요기다가 여러개의 컬럼을 와장창 쏟어 넣으면 어떻게 되는고 하니..
컬럼이 테이블 크기에 맞게 맞춰서 다다다다닥 붙어서 나온다.
고로.. 그런거 신경쓰지 말고 가로 스크롤이 생기면서 크기 넉넉하게 잡으라고 써 주는 구문..
오토 리사이즈 오프 란다.. 명쾌하군. ;;

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

그전에 요런식으로 디폴트테이블 모델을 받아야 겄지.. 안 받아도 되는가 ;; 몰라 ㅋㅋㅋㅋ

String colName[] = {""};
model = new DefaultTableModel(colName,0);
JTable table = new JTable(model);

테이블 컬럼 길이도 지정해 주자.

table.getColumnModel().getColumn(0).setPreferredWidth(8);

근데 이놈이 분명히 썼는데 길이를 안 맞춰줄 때가 있다.. 그러면 컬럼 몽땅 기술해 주면 된다. 귀찮아.

기존에 존재하는 행들을 싹 지워 보자.

int count = model.getRowCount();
for(int i = 0 ; i < count ; i++){
     model.removeRow(0);        
}

간단하지.. 로우 갯수 알아내서 for 루프 돌면서 지우면 된다.... 한번에 지우는 방법이 있겠지.. - -?


컬럼 이름을 다이나믹하게 줘 보도록 하자.
디비에서 쿼리문을 날렸다고 쳐. 그러면 가꼬오는 컬럼이 똑같으면 좋겠지만.. 항상 똑같으란 법은 없잖아.
그래서 메타데이터를 가지고 와서 그 놈을 컬럼 헤더로 쓰는 거야.

rs 는 어디선가 rs = stmt.executeQuery(sQuery); 이런식으로 이미 가져왔다고 치자.

ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
             
Vector head = new Vector();
head.addElement("MyColumn!!");  // 꼭 컬럼 명만 안 쓰고 니가 원하고 싶은데 컬럼 이름 넣을 수도 있어
              
for(int i=1;i<=columnCount;i++) {
       head.addElement(md.getColumnName(i));
}
              
// 가꼬온 컬럼의 컬럼해더 설정                            
model.setColumnIdentifiers(head);

모델은 당연히 테이블을 받아 쳐 먹은 모델이겠지?

중요한게 빠졌네. 테이블에다가 어떻게 데이터를 쳐 넣는담?
안 하면 편하고 좋겠지만.. 그래서야 써 먹을 수가 없잖아. 테이블 모델을 선언할때 배열 형태로 선언하면
이 놈이 데이터가 몇갠지 어떻게 알어. 1000000 이렇게 크게 잡아 놓으면 메모리도 아깝고 보기에도 흉해.
벡터를 쓰자. 참 좋은 녀석이야. 선언할때 사이즈 지정 안 해 줘도 되고 말이야.
아까전에 rs 그 녀석을 또 써먹을 꺼야.

Vector vector_col;

while(rs.next()) {                  
               
   vector_col=new Vector();

   for ( int k = 1 ; k <= columnCount ; k++ ) {            
       vector_col.addElement(rs.getString(k));
       table.getColumnModel().getColumn(k).setPreferredWidth(100);     // 컬럼 기본 사이즈를 100으로 할꺼야
  }         
     
  model.addRow(vector_col);
             
  i++;
}
              
table = new JTable();

... 뭔가 순서가 뒤죽박죽 엉망이 된 느낌이야.. ㅋㅋ
상관없잖아. 어차피 완성 소스도 아니니까 말이야. 냐냐냥 ~
반응형

댓글