기록 저장소
JTable - DefaultTableModel 사용 본문
- DefaultTableModel를 사용한 JTable 생성 및 rowData 추가
JPanel contentPane = new JPanel();
JScrollPane scrollPane;
String[] colName = {"이름", "전화번호", "주소"};
String[][] rowData = {{"Oracle", "010-1234-5678", "서울"},
{"Java", "010-5678-1234", "서울"}};
DefaultTableModel model;
JTable table;
JButton btnAdd = new JButton("추가");
public JTableTest1() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
// table = new JTable(rowData, columnNames);//이렇게 생성하면, 추후에 데이터의 변경이 어려움
model = new DefaultTableModel(rowData, colName);//모델생성
table = new JTable(model);//모델을 사용해 테이블 생성
// scrollPane = new JScrollPane();
// scrollPane.add(table);//스크롤팬을 따로 생성하고 add()로 테이블 붙이면 나타나지 않음 //왜지?
// scrollPane.setViewportView(table);//스크롤팬을 따로 생성했을 때는 setViewportView() 사용
scrollPane = new JScrollPane(table);//테이블을 사용해 스크롤 팬 생성
contentPane.add(scrollPane, BorderLayout.CENTER);
contentPane.add(btnAdd, "South");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
setContentPane(contentPane);
setVisible(true);
btnAdd.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
String[] add = {"HTML", "010-3333-3333", "서울"};
model.addRow(add);//모델에 추가하면 테이블에 자동으로 추가됨
}
- 테이블을 더블클릭해도 수정할 수 없게 설정하는 방법
String[] colName = {"이름", "가격", "수량"};
String[][] rowData = {{"꼬북칩", "1000","5"},
{"새우깡", "800","3"}};
public JTable table;
public TableModel() {
this.setDataVector(rowData, colName);
table = new JTable(this);
}
@Override //isCellEditable()을 override해서 return값을 false로 주면 됨
public boolean isCellEditable(int row, int column) {
return false;
}
'kitri 노트 > java' 카테고리의 다른 글
정적 멤버 (0) | 2019.05.11 |
---|---|
JDBC (0) | 2019.04.09 |
[Java #22] util package (0) | 2019.03.27 |
[Java #21] lang package_StringBuffer Class (0) | 2019.03.27 |
[Java #20] lang package_String Class (0) | 2019.03.25 |