관리 메뉴

nkdk의 세상

자바 Language 23일째 테이블 사용과 문제 본문

My Programing/JAVA

자바 Language 23일째 테이블 사용과 문제

nkdk 2008. 3. 8. 01:18
package db;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.table.*;

public class TableTest extends JFrame implements ActionListener{
// 데이터 값을 실제로 주고 시작합니다.
String data[][]=new String[10][3];
String data2[][]=new String[0][3];
String title[]={"이름", "주소", "전화"};
DefaultTableModel mod,mod1; // 테이블 데이타 모델을 클래스를 선언한다.
JTable tab, tab1;
JButton btnCopy, btnDel;

public TableTest() {
// 로직만 가지고 있는 것이다.
mod=new DefaultTableModel(data,title); // 행과 열의 개수를 가져야 한다.
tab=new JTable(mod);
JScrollPane scroll=new JScrollPane(tab);

mod1=new DefaultTableModel(data2,title); // 행과 열의 개수를 가져야 한다.
tab1=new JTable(mod1);
JScrollPane scroll1=new JScrollPane(tab1);

btnCopy=new JButton("복사");
btnDel=new JButton("삭제");
btnCopy.addActionListener(this);
btnDel.addActionListener(this);

JPanel pn=new JPanel(new BorderLayout());
pn.add("Center", scroll);
pn.add("South", btnCopy);

JPanel pn1=new JPanel(new BorderLayout());
pn1.add("Center", scroll1);
pn1.add("South", btnDel);

this.getContentPane().setLayout(new GridLayout(1,2));
this.getContentPane().add(pn);
this.getContentPane().add(pn1);

this.setBounds(200,200,300,300);
this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {
new TableTest();
}

public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(btnCopy)) {
int row=tab.getSelectedRow(); // 현재 선택된 행번호 호출
String imsi[]={(String)mod.getValueAt(row, 0),
(String)mod.getValueAt(row, 1), (String)mod.getValueAt(row, 2)};
mod1.addRow(imsi);

}else if (e.getSource().equals(btnDel)) {
mod1.removeRow(tab1.getSelectedRow());
}
}
}



package db;

import java.awt.*;
import java.awt.event.*;
import java.math.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import pac.DBConnectionMgr;

public class tabMon1 extends JFrame{
Object data[][]=new String[0][7];

String title[]={"사번", "이름", "성별", "연봉", "세금", "실수령액", "세금율"};
DefaultTableModel mod; // 테이블 데이타 모델을 클래스를 선언한다.
JTable tab;
JLabel lblCount;
Connection conn;
Statement stmt;
ResultSet rs;
DBConnectionMgr pool;

public tabMon1() {
mod=new DefaultTableModel(data,title); // 행과 열의 개수를 가져야 한다.
tab=new JTable(mod);
JScrollPane scroll=new JScrollPane(tab);
lblCount=new JLabel("전체 건수 : ", JLabel.LEFT);
this.getContentPane().add("Center",scroll);
this.getContentPane().add("South",lblCount);
this.setBounds(200,200,500,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
accDb();
accSql();
}

public void accSql() {
try {
stmt=conn.createStatement();
rs=stmt.executeQuery("select sawon_no, sawon_name, sawon_sex, sawon_pay from sawon");
int count=0;
while(rs.next()) {
String s_no=rs.getString("sawon_no");
String s_name=rs.getString("sawon_name");
String s_sex=rs.getString("sawon_sex");
int s_pay=rs.getInt("sawon_pay");
float s_yul;
if (s_pay >=4000)
s_yul = (float) 0.05;
else if (s_pay >= 3500)
s_yul = (float) 0.04;
else if (s_pay >= 3000)
s_yul = (float) 0.03;
else s_yul = (float) 0.02;
Object imsi[]={s_no, s_name, s_sex, s_pay+"만원", Math.round(s_pay*s_yul)+"만원", Math.round(s_pay-s_pay*s_yul)+"만원", s_yul+"%"};
mod.addRow(imsi);
count++;
}
lblCount.setText("전체 건수 : "+count+"명");
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "SQL오류:"+e);
}finally{
try{
rs.close(); stmt.close(); conn.close();
}catch (Exception e) {
JOptionPane.showMessageDialog(this, "SQL닫음오류:"+e);
}
}
}
public void accDb() {
try {
pool = DBConnectionMgr.getInstance();
} catch (Exception e) {
System.out.println("커넥션 오류: " + e);
}
try {
conn = pool.getConnection(); // 이렇게 하면 연결 까지 완료 됨.
} catch (Exception e) {
System.out.println("객체 생성 오류: " + e);
}
}

public static void main(String[] args) {
new tabMon1();
}

}