Java/Awt_Swing
Swing JTable
krvision
2011. 12. 6. 13:44
////////////////////////////////////JTable활용------JTableDemo.java////////////////////////////////////////////////////// import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class JTableDemo extends JFrame { JTable table;//View -(Visual Component) Object data[][]={ //Model파트-data를 가지는 부분 {"홍길동", new Integer(1), new ImageIcon("./img/img01.gif"), new Boolean(true) }, {"김길동", new Integer(2), new ImageIcon("./img/img02.gif"), new Boolean(false) }, {"정길동", new Integer(3), new ImageIcon("./img/img03.gif"), new Boolean(true) }, {"강길동", new Integer(4), new ImageIcon("./img/img04.gif"), new Boolean(false) } }; String[] colNames={"이름","번호","캐릭터","사람인가?"}; //Controller : 모델과 view부분을 연결하여 동작방식이나 이벤트 등등의 // 제어를 하는 부분. // XXXRenderer...XXXEditor... public JTableDemo(){ super(":: JTableDemo ::"); Container cp=getContentPane(); //table=new JTable(3,2);//3행2열 형태의 테이블 //JTable(Object[][] rowData, Object[] columnNames) table=new JTable(data, colNames); cp.add(new JScrollPane(table)); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); }//생성자------- public static void main(String[] args) { JTableDemo d=new JTableDemo(); d.setSize(500,500); d.setVisible(true); } }////////////////////고유한 JTable의 모델 만들기---MyTableModel.java//////////////////////////////////////////////// import javax.swing.*; import javax.swing.table.*; public class MyTableModel extends AbstractTableModel { Object data[][]={ //Model파트-data를 가지는 부분 {"홍길동", new Integer(1), new ImageIcon("./img/img01.gif"), new Boolean(true) }, {"김길동", new Integer(2), new ImageIcon("./img/img02.gif"), new Boolean(false) }, {"정길동", new Integer(3), new ImageIcon("./img/img03.gif"), new Boolean(true) }, {"강길동", new Integer(4), new ImageIcon("./img/img04.gif"), new Boolean(false) } }; String[] colNames={"이름","번호","캐릭터","사람인가?"}; //컬럼수를 리턴해줘야...오버라이딩 필수.. public int getColumnCount(){ return colNames.length; } //행의 수를 리턴해줘야...오버라이딩 필수 public int getRowCount(){ return data.length; } //각 행과 열의 해당되는 객체를 리턴...오버라이딩 필수 public Object getValueAt(int row, int col){ return data[row][col]; } //필수는 아니지만 옵션인 메소드 오버라이딩 //컬럼명을 반환하는 메소드 public String getColumnName(int col){ return colNames[col]; } //옵션-각 컬럼의 클래스 객체를 리턴-- public Class getColumnClass(int col){ Object obj=getValueAt(0, col); Class cl=obj.getClass(); return cl; } //옵션--각 셀이 편집 가능하게 해주려면 오버라이딩 public boolean isCellEditable(int row, int col){ boolean res=(col==1)? false: true; //번호는 편집 불가능하게 만들자. 나머지는 편집 가능 return res; } //옵션--수정된 값을 적용시키려면 오버라이딩. public void setValueAt(Object v, int row, int col){ String sval=v.toString(); switch (col) { case 0://1열 인 경우...String객체 data[row][col]=sval; break; case 1://2열인 경우...Integer객체 data[row][col]=new Integer(sval); break; case 2://3열인 경우...ImageIcon객체 data[row][col]=new ImageIcon(sval); break; case 3://4열인 경우...Boolean data[row][col]=new Boolean(sval); break; } }//------------------- }/////////////////////////////