- Swing에서 추가된 컴포넌트 중 하나. 사용할 때에는 Frame에 바로 넣지 않고 Container에 먼저 넣어야 한다.
- JTable.setRowSorter(RowSorter sorter) : JTable의 정렬을 설정한다.
- RowSorter(TableModel model): 정렬 시 사용하는 클래스
ex) RowSorter rs = new RowSorter(new DefaultTableModel());
JTable.setRowSorter(rs);
- JTable.convertRowIndexToModel(int viewRowIndex) : 정렬 순서가 아닌 실제 데이터 순의 인덱스 번호 반환
- DefaultTableModel이라는 모델에 Vector 형태로 자료를 담고, 그 모델을 테이블에 추가하여 테이블에 자료를 넣는 형식
import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class UseJTable extends JFrame { DefaultTableModel dtm; Vector<String> list; JTable table; Vector<String> colName; UseJTable() { super("JTable Test"); setBounds(300, 300, 300, 300); colName = new Vector<String>(); colName.add("이름"); colName.add("시"); colName.add("구"); colName.add("동"); // 익명중첩 클래스로 테이블 편집 여부를 설정한다. dtm = new DefaultTableModel(colName ,0){ // DefaultTableModel(Vector ColumnNames, int rowCount) @Override public boolean isCellEditable(int row, int column) // 테이블의 편집 가능 여부를 알려주는 메소드 { return false; // 편집이 안되도록 한다. } }; list = new Vector<String>(); list.add("홍길동"); list.add("서울시"); list.add("강동구"); list.add("천호동"); dtm.addRow(list); // addRow() 메소드는 첫 인덱스부터 columNames의 개수만큼만 추가되기 때문에 Vector를 초기화 list = new Vector<String>(); list.add("강길동"); list.add("서울시"); list.add("강남구"); list.add("대치동"); dtm.addRow(list); list = new Vector<String>(); list.add("박길동"); list.add("서울시"); list.add("광진구"); list.add("화양동"); dtm.addRow(list); table = new JTable(dtm); table.getTableHeader().setReorderingAllowed(false); // JTable의 헤더를 고정시킨다. (true는 고정해제) add(new JScrollPane(table)); // table을 담은 JScollPane을 JFrame에 부착 setVisible(true); // table을 단순히 JFrame에 부착시 헤더가 나오지 않는다 } public static void main(String[] args) { new UseJTable(); } }
'미래(2015-2016) > 자습' 카테고리의 다른 글
룩앤필 사용하기 (0) | 2015.11.03 |
---|---|
JToolBar (0) | 2015.11.02 |
DefaultListModel (0) | 2015.11.02 |
GridBagLayout (0) | 2015.10.29 |
계산기 외형만 구현하기 (0) | 2015.10.27 |