import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import day0903.DbConnTest;
public class sawonDbSwing extends JFrame implements ActionListener, ItemListener{
//add,delete테이블 생성 안 하고 추가,삭제
Container cp;
DbConnTest db=new DbConnTest();
DefaultTableModel model;
JTable table;
JButton btnDel,btnAdd;
JRadioButton[]rb=new JRadioButton[6]; //액션리스너도 되지만 대부분 itemlistener로 함
public sawonDbSwing() {
super("사원관리");
this.setBounds(800, 100, 700, 500);
this.initDesign();
//테이블 생성후 db로부터 데이터 가져오기
this.getSawonTable(1); //전체검색이니까 1
this.getContentPane().setBackground(Color.white);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
//디자인
public void initDesign() {
this.setLayout(null);
//테이블 추가
String []title= {"No.","사번","이름","성별","부서","급여"};
model=new DefaultTableModel(title,0); //제목만 넣고 행 개수는 일단 0으로 추가
table=new JTable(model);
JScrollPane js=new JScrollPane(table);
js.setBounds(10, 100, 670, 350);
this.add(js);
//버튼
btnAdd=new JButton("추가");
btnAdd.setBounds(130, 10, 100, 30);
btnAdd.addActionListener(this);
this.add(btnAdd);
btnDel=new JButton("삭제");
btnDel.setBounds(10, 10, 100, 30);
btnDel.addActionListener(this);
this.add(btnDel);
//라디오버튼
ButtonGroup bg=new ButtonGroup();
//검색조건:1.전체 2.여자 3.남자 4.교육부 5.홍보부 6.관리부
String[]rb_label= {"전체","여자","남자","교육부","홍보부","관리부"};
int xpos=10;
for(int i=0;i<rb_label.length;i++)
{
//라디오버튼생(0번을 기본선택)
rb[i]=new JRadioButton(rb_label[i], i==0?true:false); //0이면 true, 그렇지 않으면 false
rb[i].setBounds(xpos, 50, 90, 30);
rb[i].setOpaque(false);
//각각의 버튼에 이벤트
rb[i].addItemListener(this);
//라디오버튼을 그룹에 추가
bg.add(rb[i]);
this.add(rb[i]);
xpos+=100; //xpos 값 증가
}
}
//db데이터 가져와서 출력
public void getSawonTable(int select) { //선택할 수 있는 select값을 인자로 남김
Connection conn=db.getCloudOracle();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="";
//검색조건:1.전체 2.여자 3.남자 4.교육부 5.홍보부 6.관리부
if(select==1)
sql="select ROWNUM no, num,name,gender,buseo,pay from sawon";
else if(select==2)
sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where gender='여자'";
else if(select==3)
sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where gender='남자'";
else if(select==4)
sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where buseo='교육부'";
else if(select==5)
sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where buseo='홍보부'";
else if(select==6)
sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where buseo='관리부'";
try {
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
model.setRowCount(0); //행 개수 0으로 초기화
while(rs.next())
{
//테이블에 추가할 벡터 선언후 데이터 추가
Vector<String>data=new Vector<String>();
data.add(rs.getString("no"));
data.add(rs.getString("num"));
data.add(rs.getString("name"));
data.add(rs.getString("gender"));
data.add(rs.getString("buseo"));
data.add(rs.getString("pay"));
//벡터의 데이터를 행으로 추가
model.addRow(data);
}
} catch (SQLException e) {
} finally {
db.dbClose(rs, pstmt, conn);
}
}
//액션이벤트
@Override
public void actionPerformed(ActionEvent e) {
Object ob=e.getSource();
Connection conn=db.getCloudOracle();
PreparedStatement pstmt=null;
String sql="";
//삭제
if(ob==btnDel)
{
//행번호얻기, 선택 안 했을 때 -1반환
int row=table.getSelectedRow();
System.out.println(row); //확인용
//선택 안 했을 때
if(row==-1)
{
JOptionPane.showMessageDialog(this, "삭제할 행 선택");
return; //메서드종료
}
//선택한 행의 num 얻기
String num=(String)model.getValueAt(row, 1);
System.out.println(num); //확인용
//위의 num에 해당하는 db삭제후 테이블 다시 출력
sql="delete from sawon where num=?";
try {
pstmt=conn.prepareStatement(sql);
//?바인딩
pstmt.setString(1, num);
//실행
pstmt.execute();
//전체데이터 다시 불러오기
this.getSawonTable(1); //전체검색이니까 1
//라디오버튼도 0번 전체 선택
rb[0].setSelected(true);
} catch (SQLException e1) {
} finally {
db.dbClose(pstmt, conn);
}
//추가
} else if (ob==btnAdd)
{
//이름,성별,부서,급여 묻기..inputdiallog
String name=JOptionPane.showInputDialog("추가할 이름 입력");
String gender=JOptionPane.showInputDialog("추가할 성별 입력");
String buseo=JOptionPane.showInputDialog("추가할 부서 입력");
String pay=JOptionPane.showInputDialog("추가할 급여 입력");
sql="insert into sawon values(seq_sawon.nextval,?,?,?,?)";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, gender);
pstmt.setString(3, buseo);
pstmt.setString(4, pay);
pstmt.execute();
this.getSawonTable(1); //전체검색이니까 1
//라디오버튼도 0번 전체 선택
rb[0].setSelected(true);
} catch (SQLException e1) {
} finally {
db.dbClose(pstmt, conn);
}
}
}
//아이템리스너..라디오버튼이벤트
@Override
public void itemStateChanged(ItemEvent e) {
//라디오버튼 누를 때의 검색..배열
Object ob=e.getSource();
for(int i=0;i<rb.length;i++)
{
if(rb[i]==ob)
this.getSawonTable(i+1);
}
}
public static void main(String[] args) {
new sawonDbSwing();
}
}