package JTableMake;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class DataWindowTable extends JFrame {
private static final long serialVersionUID = 1L;
// 기본설정은 항상 생성자에서
public DataWindowTable() {
// 테이블에 출력할 데이터 만들기
// 컬럼이름
String[] columns = { "학생", "장래희망", "나이" };
// 데이터 만들기
String[][] datas = { { "김영진", "DJ", "27" }, { "김민호", "경호원", "28" }, { "김기남", "바텐터", "28" },
{ "모인재", "바리스타", "28" }
};
// 데이터를 테이블에 출력하기 위해서 TableModel로 변경
TableModel model = new DefaultTableModel(datas, columns);
// 위의 데이터를 가지고 테이블을 생성
JTable table = new JTable(model);
// Scrollpane을 생성해서 JTable을 배치하고 중앙에 배치
// 컬럼이 나오지 않는다 이걸 출력하기 위해서
JScrollPane sc = new JScrollPane(table);
add("Center", sc);
JPanel p = new JPanel();
JLabel l = new JLabel("이름");
p.add(l);
JTextField Field = new JTextField(5);
p.add(Field);
JLabel category = new JLabel("분야");
p.add(category);
JComboBox<String> cbdream = new JComboBox<String>();
cbdream.addItem("경호원");
cbdream.addItem("경찰");
cbdream.addItem("의사");
cbdream.addItem("비행사");
p.add(cbdream);
JLabel age = new JLabel("나이");
p.add(age);
JTextField ageput = new JTextField(3);
p.add(ageput);
JButton btn = new JButton("삽입");
p.add(btn);
JButton btn1 = new JButton("삭제");
p.add(btn1);
add("North", p);
setTitle("표만들기");
setBounds(700, 300, 500, 500);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 버튼을 눌렀을 때는 ActionEvent 발생
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 이벤트 라우팅
switch (e.getActionCommand()) {
case "삽입":
// 입력하거나 선택한 데이터 가져오기
String name = Field.getText();
String age1 = ageput.getText();
String category1 = cbdream.getSelectedItem().toString();
System.out.println(name);
System.out.println(age1);
System.out.println(category1);
// 오류 메세지
if (name.trim().length() < 1) {
JOptionPane.showMessageDialog(null, "이름은 필수 입력", "입력오류", JOptionPane.ERROR_MESSAGE);
// 중간에 빠져나가고 싶으면 리턴을하면됩니다.
return;
}
if (age1.trim().length() < 1) {
JOptionPane.showMessageDialog(null, "나이를입력 필수", "입력오류", JOptionPane.ERROR_MESSAGE);
// 중간에 빠져나가고 싶으면 리턴을하면됩니다.
return;
}
// age는 숫자로만 구성되어야합니다.
int i = 0;
while (i < age1.length()) {
char ch = age1.charAt(i);
if (ch < '0' || ch > '9') {
JOptionPane.showMessageDialog(null, "나이는 숫자로만 입력", "입력오류", JOptionPane.ERROR_MESSAGE);
return;
}
i = i + 1;
}
// 데이터 삽입작업
String[] row = { name, category1, age1 };
// 테이블의 모델을 꺼내기
// 형변환한 이유
// JTable의 Model은 DefaultTableModel 클래스 타입인데
// getModel로 리턴받게 되면 TableModel로 리턴되서
// 원래의 자료형으로 형변환해서 사용합니다.
// 테이블에 삽입이 아닌 테이블의 모델이 삽입한 것
DefaultTableModel m = (DefaultTableModel) table.getModel();
m.addRow(row);
JOptionPane.showMessageDialog(null, "삽입에 성공", "데이터 삽입",JOptionPane.INFORMATION_MESSAGE);
Field.setText("");
age.setText("");
cbdream.setSelectedIndex(0);
break;
case "삭제":
int rownum = table.getSelectedRow();
//선택이 안된경우는 음수값
if(rownum<0) {
JOptionPane.showMessageDialog(null, "삭제할 행을 선택하세요", "데이터 삭제",JOptionPane.INFORMATION_MESSAGE);
return;
}
// Confirm 대화상자 출력
int r = JOptionPane.showConfirmDialog(null, "정말로삭제? ","데이터삭제",JOptionPane.YES_NO_CANCEL_OPTION);
if(r==0) {
DefaultTableModel m1 = (DefaultTableModel)table.getModel();
m1.removeRow(rownum);
JOptionPane.showMessageDialog(null, "삭제완료","삭제",JOptionPane.INFORMATION_MESSAGE);
}
break;
}
}
};
btn.addActionListener(listener);
btn1.addActionListener(listener);
}
}
'Java > 자바 공부' 카테고리의 다른 글
1-4) ChractorStream의 Writed와 Read (0) | 2018.01.17 |
---|---|
split이용한 배열의 마지막 값을 가져오는 방법 (0) | 2018.01.17 |
1-3) ByteStream의 파일복사 방법 (0) | 2018.01.17 |
1-2)ByteStream의 BufferdOutputStream, BufferdInputStream (0) | 2018.01.17 |
1-1)Byte Stream에 대한 정의 및 메소드 설명 (0) | 2018.01.17 |