2008년 8월 18일 월요일

JTable setPreferredWidth 각 컬럼 너비조절 질문이요




import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;
class table_test extends JFrame{
private DefaultTableModel dtm;
private JTable jt = new JTable();
private JScrollPane jsp = new JScrollPane(jt);
public table_test(){
this.init();
this.setSize(300, 200);
this.setVisible(true);
}
public void init(){


this.getContentPane().add("Center", jsp);

Vector attribute = new Vector(); // 한 행에 입력될 속성
attribute.addElement("김씨");
attribute.addElement("서울대학교");
Vector data = new Vector(); // 이름과 소속 속성을 가지는 하나의 행 벡터
data.add(attribute);

Vector header = new Vector();
header.add("이름");
header.add("소속");

dtm = new DefaultTableModel(data, header);
jt.setModel(dtm);
// System.out.println(jt.getColumnModel().getTotalColumnWidth()); // 기본값 75+75 = 150
// jt.getColumnModel().getColumn(0).setWidth(100);
// jt.getColumnModel().getColumn(1).setWidth(200);
// System.out.println(jt.getColumnModel().getTotalColumnWidth()); // 변경값 100+200 = 300
//setWidth 의 영문 번역 입니다.
//This method should not be used to set the widths of columns in the JTable, use setPreferredWidth instead.
//이 method 은 칼럼의 폭을 JTable로 세트 하는데 이용되어서는 안됩니다. 그리고, 그 대신에 setPreferredWidth 이 사용이 됩니다

jt.getColumnModel().getColumn(0).setPreferredWidth(100);
jt.getColumnModel().getColumn(1).setPreferredWidth(200);
// jt.getColumnModel().getColumn(0).setMinWidth(width);
// jt.getColumnModel().getColumn(0).setMaxWidth(width);
//jt.repaint(); // 보여지는 테이블의 컬럼길이는 그대로인게 문제
}

}
public class tableTest{
public static void main(String[] ar){
new table_test();
}
}


//문]
//사정상 TableColumn으로 설정하는 법을 쓰지않고, 아래와 같이 테이블에서 get 하는 방식으로 접근을 해서 셋팅을 하려고 하는데 잘 되지가 않습니다.
//커맨드 출력상으로는 분명 논리적으로 총 너비를 합한값이 변해져있는데 정작 보여지는 테이블의 총 너비는 전혀 변하지 않은게 난감하네요.....;;
//조언 부탁드립니다.

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby