UI 부분
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.border.TitledBorder;
import model1.ZipcodeListModel;
import javax.swing.UIManager;
import java.awt.Color;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractListModel;
public class ZipcodeSearchUI02 extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JList list;
private JTextField textField1;
private JTextField textField2;
private JButton btn;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ZipcodeSearchUI02 frame = new ZipcodeSearchUI02();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ZipcodeSearchUI02() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 650, 540);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"),
"\uC6B0\uD3B8\uBC88\uD638\uAC80\uC0C9\uAE30", TitledBorder.LEADING, TitledBorder.TOP, null,
new Color(0, 0, 0)));
panel.setBounds(6, 21, 616, 73);
contentPane.add(panel);
panel.setLayout(null);
JLabel lbl = new JLabel("동이름");
lbl.setBounds(12, 41, 57, 15);
panel.add(lbl);
textField = new JTextField();
textField.setBounds(67, 38, 428, 21);
panel.add(textField);
textField.setColumns(10);
btn = new JButton("검색");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 1. 데이터베이스 접속
// 2. 모델 만들고
// 3. List
//데이터를 검사하는 루틴
String strDong = textField.getText().trim();
if(strDong.length() < 2) {
JOptionPane.showMessageDialog( ZipcodeSearchUI02.this, "동이름을 2자 이상 입력,", "입력 경고", JOptionPane.WARNING_MESSAGE);
} else {
list.setModel(new ZipcodeListModel(strDong));
}
}
});
btn.setBounds(507, 37, 97, 23);
panel.add(btn);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBounds(10, 111, 612, 318);
contentPane.add(scrollPane);
list = new JList();
list.setModel(new AbstractListModel() {
String[] values = new String[] { "[우편번호] 시도 구군 동 리 번지", "[우편번호] 시도 구군 동 리 번지", "[우편번호] 시도 구군 동 리 번지" };
public int getSize() {
return values.length;
}
public Object getElementAt(int index) {
return values[index];
}
});
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
textField1.setText((String) list.getSelectedValue());
}
});
scrollPane.setViewportView(list);
textField1 = new JTextField();
textField1.setEditable(false);
textField1.setText("기본주소");
textField1.setBounds(6, 439, 616, 21);
contentPane.add(textField1);
textField1.setColumns(10);
textField2 = new JTextField();
textField2.setText("상세주소");
textField2.setBounds(6, 470, 616, 21);
contentPane.add(textField2);
textField2.setColumns(10);
}
}
클래스
package model1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.AbstractListModel;
public class ZipcodeListModel extends AbstractListModel<String> {
// 검색된 우편번호가 저장될 저장소
private ArrayList<String> items = new ArrayList<>();
public ZipcodeListModel(String strDong) {
// TODO Auto-generated constructor stub
// 데이터베이스 연걸
String url = "jdbc:mysql://localhost:3306/project";
String user = "project";
String password = "1234";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
String sql = "select zipcode, sido, gugun, dong, ri, bunji from zipcode where dong like ?;";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, strDong + "%");
rs = pstmt.executeQuery();
while(rs.next()) {
String zipcode = rs.getString("zipcode");
String sido = rs.getString("sido");
String gugun = rs.getString("gugun");
String dong = rs.getString("dong");
String ri = rs.getString("ri");
String bunji = rs.getString("bunji");
String address = String.format("[%s] %s %s %s %s %s", zipcode, sido, gugun, dong, ri, bunji);
items.add(address + System.lineSeparator());
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if(rs != null) try {rs.close();} catch(SQLException e) {}
if(pstmt != null) try {pstmt.close();} catch(SQLException e) {}
if(conn != null) try {conn.close();} catch(SQLException e) {}
}
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public String getElementAt(int index) {
// TODO Auto-generated method stub
return items.get(index);
}
}
TO 클래스 - 데이터 전송 객체
package model1;
public class ZipcodeTO {
private String zipcode;
private String sido;
private String gugun;
private String dong;
private String ri;
private String bunji;
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getSido() {
return sido;
}
public void setSido(String sido) {
this.sido = sido;
}
public String getGugun() {
return gugun;
}
public void setGugun(String gugun) {
this.gugun = gugun;
}
public String getDong() {
return dong;
}
public void setDong(String dong) {
this.dong = dong;
}
public String getRi() {
return ri;
}
public void setRi(String ri) {
this.ri = ri;
}
public String getBunji() {
return bunji;
}
public void setBunji(String bunji) {
this.bunji = bunji;
}
}
DAO 클래스 - 데이터 접근 객체
package model1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
//DAO 기본 구성
// 데이터베이스가 여러개면 DAO가 여러 개로 생성하여 사용한다.
public class ZipcodeDAO {
private Connection conn = null;
public ZipcodeDAO() {
// TODO Auto-generated constructor stub
String url = "jdbc:mysql://localhost:3306/project";
String user = "project";
String password = "1234";
try {
Class.forName("org.mariadb.jdbc.Driver");
// this가 Connection conn을 가르킨다
this.conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} // finally 안써줌
}
public ArrayList<ZipcodeTO> searchZipcode(String strDong) {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeTO> addresses = new ArrayList<>();
try {
String sql = "select zipcode, sido, gugun, dong, ri, bunji from zipcode where dong like ?;";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, strDong + "%");
rs = pstmt.executeQuery();
while (rs.next()) {
ZipcodeTO to = new ZipcodeTO();
to.setZipcode(rs.getString("zipcode"));
to.setSido(rs.getString("sido"));
to.setGugun(rs.getString("gugun"));
to.setDong(rs.getString("dong"));
to.setRi(rs.getString("ri"));
to.setBunji(rs.getString("bunji"));
addresses.add(to);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if (rs != null)
try {
rs.close();
} catch (SQLException e1) {
}
if (pstmt != null)
try {
pstmt.close();
} catch (SQLException e1) {
}
if (conn != null)
try {
conn.close();
} catch (SQLException e1) {
}
}
return addresses;
}
}
클래스 부분에서 데이터베이스에 연결하는 부분을 없앰
package model1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.AbstractListModel;
public class ZipcodeListModel02 extends AbstractListModel<String> {
// 검색된 우편번호가 저장될 저장소
private ArrayList<ZipcodeTO> items;
public ZipcodeListModel02(String strDong) {
// TODO Auto-generated constructor stub
// 생성하는 순간 connection 연결
ZipcodeDAO dao = new ZipcodeDAO();
this.items = dao.searchZipcode(strDong);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public String getElementAt(int index) {
// TODO Auto-generated method stub
ZipcodeTO to = items.get(index);
String address = String.format("[%s] %s %s %s %s %s",
to.getZipcode(), to.getSido(), to.getGugun(),
to.getDong(), to.getRi(), to.getBunji());
return address;
}
}
UI 클래스에서 바꿔줌
btn = new JButton("검색");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 1. 데이터베이스 접속
// 2. 모델 만들고
// 3. List
//데이터를 검사하는 루틴
String strDong = textField.getText().trim();
if(strDong.length() < 2) {
JOptionPane.showMessageDialog( ZipcodeSearchUI02.this, "동이름을 2자 이상 입력,", "입력 경고", JOptionPane.WARNING_MESSAGE);
} else {
// ZipcodeListModel02로 바꿔줌
list.setModel(new ZipcodeListModel02(strDong));
}
}
});
DTO
public class EmpTO {
private String empno;
private String ename;
private String deptno;
private String sal;
private String hiredate;
private String job;
public String getEmpno() {
return empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
public String getSal() {
return sal;
}
public void setSal(String sal) {
this.sal = sal;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
DAO
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class EmpDAO {
Connection conn = null;
public EmpDAO() {
// TODO Auto-generated constructor stub
String url = "jdbc:mysql://localhost:3306/sample";
String user = "root";
String password = "123456";
try {
Class.forName("org.mariadb.jdbc.Driver");
// this가 Connection conn을 가르킨다
this.conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
}
}
public ArrayList<EmpTO> serarchEmp(String ename) {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<EmpTO> emp = new ArrayList<>();
try {
String sql = "select empno, ename, deptno, sal, hiredate, job from emp where ename like ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, ename + "%");
rs = pstmt.executeQuery();
while(rs.next()) {
EmpTO to = new EmpTO();
to.setEmpno(rs.getString("empno"));
to.setEname(rs.getString("ename"));
to.setDeptno(rs.getString("deptno"));
to.setSal(rs.getString("sal"));
to.setHiredate(rs.getString("hiredate"));
to.setJob(rs.getString("job"));
emp.add(to);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if (rs != null)try {rs.close();} catch (SQLException e1) {}
if (pstmt != null)try {pstmt.close();} catch (SQLException e1) {}
if (conn != null)try {conn.close();} catch (SQLException e1) {}
}
return emp;
}
}
클래스
import java.util.ArrayList;
import javax.swing.AbstractListModel;
public class EmpSearchUI extends AbstractListModel<String> {
ArrayList<EmpTO> items;
public EmpSearchUI(String ename) {
// TODO Auto-generated constructor stub
EmpDAO dao = new EmpDAO();
this.items = dao.serarchEmp(ename);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public String getElementAt(int index) {
// TODO Auto-generated method stub
EmpTO to = items.get(index);
String name = String.format("[%s] %s %s %s %s %s",
to.getEmpno(), to.getEname(), to.getDeptno(), to.getSal(),
to.getHiredate(), to.getJob());
return name;
}
}
UI
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class EmpSearchUI01 extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JList list;
private JTextField textField1;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EmpSearchUI01 frame = new EmpSearchUI01();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public EmpSearchUI01() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 650, 509);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160, 160, 160)), "\uC0AC\uC6D0\uC774\uB984 \uAC80\uC0C9\uAE30", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
panel.setBounds(6, 21, 616, 73);
contentPane.add(panel);
panel.setLayout(null);
JLabel lbl = new JLabel("사원이름");
lbl.setBounds(12, 41, 57, 15);
panel.add(lbl);
textField = new JTextField();
textField.setBounds(67, 38, 428, 21);
panel.add(textField);
textField.setColumns(10);
JButton btn = new JButton("검색");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String name = textField.getText().trim();
if(name.length() < 2) {
JOptionPane.showMessageDialog(EmpSearchUI01.this, "이름 2글자 이상 입력.", "입력 경고", JOptionPane.WARNING_MESSAGE);
} else {
list.setModel(new EmpSearchUI(name));
}
}
});
btn.setBounds(507, 37, 97, 23);
panel.add(btn);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBounds(10, 111, 612, 318);
contentPane.add(scrollPane);
list = new JList();
list.setModel(new AbstractListModel() {
String[] values = new String[] {"[사원번호] 사원이름 부서번호 급여 입사일자 매니저명"};
public int getSize() {
return values.length;
}
public Object getElementAt(int index) {
return values[index];
}
});
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
scrollPane.setViewportView(list);
textField1 = new JTextField();
textField1.setEditable(false);
textField1.setText("사원정보");
textField1.setBounds(6, 439, 616, 21);
contentPane.add(textField1);
textField1.setColumns(10);
}
}
행과 열 만들어주기
모델에서 만들어준다
이런식으로 만들어 진다. / 입력도 가능하다. / 엑셀 / read only의 엑셀개념
라인 설정
컬럼명은 컬럼명부분이아닌 그 밑에를 눌러서 title란에 입력해주면 된다.
밑에 체크표시 해제하면 읽기전용, 사이즈 조절 불가
데이터를 쓰고 읽는 방법이 있는 클래스를 생성
클래스 생성 - > AbstractTableModel 상속
import javax.swing.table.AbstractTableModel;
// 데이터 쓰고
public class CustomTableModel1 extends AbstractTableModel {
private String[][] items = new String[][] {
{"11", "12", "13", "14", "15"},
{"21", "22", "23", "24", "25"},
{"31", "32", "33", "34", "35"},
{null, null, null, null, null}
};
// 데이터 읽는방법들
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return items.length;
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return items[0].length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return items[rowIndex][columnIndex];
}
}
UI
public JTableEx01() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(12, 10, 495, 277);
contentPane.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
/*
// 행과 열이 있어서 2차배열이다.
table.setModel(new DefaultTableModel(
new Object[][] {
{"1", "2", "3", "4", "5"},
{null, null, null, null, null},
},
// 컬럼 이름 선언법
new String[] {
"\uCEEC\uB7FC\uBA851", "\uCEEC\uB7FC\uBA852", "\uCEEC\uB7FC\uBA853", "\uCEEC\uB7FC\uBA853", "\uCEEC\uB834\uBA855"
}
) {
boolean[] columnEditables = new boolean[] {
false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
*/
table.setModel(new CustomTableModel1());
table.getColumnModel().getColumn(0).setResizable(false);
table.getColumnModel().getColumn(1).setResizable(false);
table.getColumnModel().getColumn(2).setResizable(false);
table.getColumnModel().getColumn(3).setResizable(false);
table.getColumnModel().getColumn(4).setResizable(false);
}
컬럼이름 넣기
위의 코드 외부 클래스에서 컬럼이름 지정 코드, 컬럼이름 읽기 코드 추가
import javax.swing.table.AbstractTableModel;
// 데이터 쓰고
public class CustomTableModel1 extends AbstractTableModel {
private String[][] items = new String[][] {
{"11", "12", "13", "14", "15"},
{"21", "22", "23", "24", "25"},
{"31", "32", "33", "34", "35"},
{null, null, null, null, null}
};
// 컬럼 이름 지정
private String[] columnNames = {
"col1", "col2", "com3", "col4", "col5"
};
// 컬럼 이름 읽는방법 / 적용 시키기 : getColumnName 오버라이딩
@Override
public String getColumnName(int column) {
// TODO Auto-generated method stub
return columnNames[column];
}
// 데이터 읽는방법들
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return items.length;
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return items[0].length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return items[rowIndex][columnIndex];
}
}
후 실행
ArrayList
ArrayList<ArrayList<String>> 선언해서 직접 데이터 넣기
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class CustomTableModel2 extends AbstractTableModel {
private ArrayList<ArrayList<String>> items;
public CustomTableModel2() {
// TODO Auto-generated constructor stub
// 아직 객체 생성을 해주지않았기때문에 뒤에 꼭 해줘야한다.
ArrayList<String> item1 = new ArrayList<>();
item1.add("11");
item1.add("12");
item1.add("13");
item1.add("14");
item1.add("15");
ArrayList<String> item2 = new ArrayList<>();
item2.add("21");
item2.add("22");
item2.add("23");
item2.add("24");
item2.add("25");
ArrayList<String> item3 = new ArrayList<>();
item3.add("31");
item3.add("32");
item3.add("33");
item3.add("34");
item3.add("35");
items = new ArrayList<>();
items.add(item1);
items.add(item2);
items.add(item3);
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return items.get(0).size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return items.get(rowIndex).get(columnIndex);
}
}
TO 클래스 생성
public class DataTO {
private String num1;
private String num2;
private String num3;
private String num4;
private String num5;
public String getNum1() {
return num1;
}
public void setNum1(String num1) {
this.num1 = num1;
}
public String getNum2() {
return num2;
}
public void setNum2(String num2) {
this.num2 = num2;
}
public String getNum3() {
return num3;
}
public void setNum3(String num3) {
this.num3 = num3;
}
public String getNum4() {
return num4;
}
public void setNum4(String num4) {
this.num4 = num4;
}
public String getNum5() {
return num5;
}
public void setNum5(String num5) {
this.num5 = num5;
}
}
CustomTable 클래스
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class CustomTableModel3 extends AbstractTableModel {
private ArrayList<DataTO> items;
public CustomTableModel3() {
// TODO Auto-generated constructor stub
DataTO to1 = new DataTO();
to1.setNum1("11");
to1.setNum2("12");
to1.setNum3("13");
to1.setNum4("14");
to1.setNum5("15");
DataTO to2 = new DataTO();
to2.setNum1("21");
to2.setNum2("22");
to2.setNum3("23");
to2.setNum4("24");
to2.setNum5("25");
DataTO to3 = new DataTO();
to3.setNum1("31");
to3.setNum2("32");
to3.setNum3("33");
to3.setNum4("34");
to3.setNum5("35");
items = new ArrayList<>();
items.add(to1);
items.add(to2);
items.add(to3);
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return 5;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
String result = "";
DataTO to = items.get(rowIndex);
switch(columnIndex) {
case 0:
result = to.getNum1();
break;
case 1:
result = to.getNum2();
break;
case 2:
result = to.getNum3();
break;
case 3:
result = to.getNum4();
break;
default :
result = to.getNum5();
}
return result;
}
}
테이블 모델 클래스 - EmpTableModel클래스 생성 -> AbstractTableModel
데이터 - emp
데이터와 연결 - EmpDAO
empDAO()
ArrayList<EmpTO> listEmp()
TO
package pack1;
public class EmpTO {
private String empno;
private String ename;
private String job;
private String mgr;
private String hiredate;
private String sal;
private String comm;
private String deptno;
public String getEmpno() {
return empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getMgr() {
return mgr;
}
public void setMgr(String mgr) {
this.mgr = mgr;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
public String getSal() {
return sal;
}
public void setSal(String sal) {
this.sal = sal;
}
public String getComm() {
return comm;
}
public void setComm(String comm) {
this.comm = comm;
}
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
}
DAO
package pack1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class EmpDAO {
private Connection conn = null;
public EmpDAO() {
// TODO Auto-generated constructor stub
String url = "jdbc:mysql://localhost:3306/sample";
String user = "root";
String password = "123456";
try {
Class.forName("org.mariadb.jdbc.Driver");
this.conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
}
}
public ArrayList<EmpTO> listEmp() {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<EmpTO> items = new ArrayList<>();
try {
String sql = "select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp";
pstmt = this.conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
EmpTO to = new EmpTO();
to.setEmpno(rs.getString("empno"));
to.setEname(rs.getString("ename"));
to.setJob(rs.getString("job"));
to.setMgr(rs.getString("mgr"));
to.setHiredate(rs.getString("hiredate"));
to.setSal(rs.getString("sal"));
to.setComm(rs.getString("comm"));
to.setDeptno(rs.getString("deptno"));
items.add(to);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if (rs != null)
try {
rs.close();
} catch (SQLException e1) {
}
if (pstmt != null)
try {
pstmt.close();
} catch (SQLException e1) {
}
if (conn != null)
try {
conn.close();
} catch (SQLException e1) {
}
}
return null;
}
}
커스텀 클래스
package pack1;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class EmpTableModel extends AbstractTableModel {
private ArrayList<EmpTO> items = new ArrayList<>();
private String[] columnNames = new String[] {
"empno", "ename", "job", "mgr", "hiredate", "sal", "comm", "deptno"
};
public EmpTableModel() {
// TODO Auto-generated constructor stub
EmpDAO dao = new EmpDAO();
items = dao.listEmp();
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return 8;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
String result = "";
EmpTO to = items.get(rowIndex);
switch(columnIndex) {
case 0:
result = to.getEmpno();
break;
case 1:
result = to.getEname();
break;
case 2:
result = to.getJob();
break;
case 3:
result = to.getMgr();
break;
case 4:
result = to.getHiredate();
break;
case 5:
result = to.getSal();
break;
case 6:
result = to.getComm();
break;
default :
result = to.getDeptno();
}
return result;
}
public String getColumnName(int column) {
return columnNames[column];
}
}
UI
package pack1;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import pack1.EmpTableModel;
public class EmpUI01 extends JFrame {
private JPanel contentPane;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EmpUI01 frame = new EmpUI01();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public EmpUI01() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(12, 10, 760, 316);
contentPane.add(scrollPane);
table = new JTable();
/*
table.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null, null, null, null, null},
},
new String[] {
"empno", "ename", "job", "mgr", "hiredate", "sal", "comm", "deptno"
}
) {
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
*/
table.setModel(new EmpTableModel());
table.getColumnModel().getColumn(0).setResizable(false);
table.getColumnModel().getColumn(1).setResizable(false);
table.getColumnModel().getColumn(2).setResizable(false);
table.getColumnModel().getColumn(3).setResizable(false);
table.getColumnModel().getColumn(4).setResizable(false);
table.getColumnModel().getColumn(5).setResizable(false);
table.getColumnModel().getColumn(6).setResizable(false);
table.getColumnModel().getColumn(7).setResizable(false);
scrollPane.setViewportView(table);
}
}