-
[Java Swing]SWing에서 jTable 사용하기JAVA/java Swing 2022. 5. 13. 17:18728x90
윈도우빌더를 사용할 경우 아래와 같은 순서에 따라 jTable을 등록시켜준다.
▼ 작업할 패키지에서 'Ctrl+N'입력후 'jFrame'로 검색한다
▼ 작업할 class파일의 이름을 등록한다.
▼ 왼쪽 아래 'Package Explorer'에 클래스파일이 생성되고, 우측에 'Source'탭에 코드가 보인다. 이때 'Design'탭을 확인한다.
▼ 'Design'탭을 클릭하면 우측에 창이 미리 만들어져서 보인다.
▼ 중앙의 'Containers'탭에서 'jPanel'아이콘을 선택후 우측 위도우창에 드래그해서 프래임의 크기에 맞게 그린후, 패널의 이름을 'pnTop'로 설정하였다.
▼ 다시 중앙의 'Layouts'탭에서 'Absolute layout'아이콘을 선택후 우측 윈도우창을 클릭해 준다.
▼ 아래쪽 윈도우에도 하나더 패널을 추가했다. 이름은 'pnCenter'로 설정했다.
▼ 아래쪽 윈도우에 중앙의 'Absolute layout'를 선택하여 우측 윈도우 pnCenter패널의 상단을 클릭해 준다.
▼ 다시 'JScrollPane'아이콘을 클릭해서 우측의 pnCenter패널안에 드래그해서 크기를 똑같이 맞춰서 그려준다.
▼ 다시 'Components'탭의 'JTable'아이콘을 클릭한후 pnCenter패널의 상단을 클릭해준다.->(수정: 상단을 찍지말고, 우측 하단의 content(내용)영역을 크릭한다.
▼ 앞의 작업을 하면 JTable가 한줄로 들어간 것을 볼 수 있다.
/* 다음은 Source탭으로 이동해서 아래와 같은 순서에 따라서 코드를 입력시켜준다.(아래쪽의 조회 코드 참조) */
package design; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import java.util.regex.Pattern; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; public class HoewonTest extends JFrame { private JPanel contentPane; private JTextField txtSearch; private JTable tblContent; private JComboBox comboSearch; // jTable을 디자인탭에 올리는 순서? // 1. 먼저 'Panel'을 하나 만든후, 'Absolute Layout'을 패널에 찍어준후, // 2. 'jScrollPane'을 패널크기에 맞도록 그려준다. // 3. 'jTable'을 'jScrollPane'상단에 클릭해 준다. // 데이터베이스 연결을 위한 DefaultTableModel 객체준비 : Vector형식의 자료를 table로 표시한다. // 테이블에 DB자료를 넣는 순서?(모든 준비된 객체들은 생성과 동시에 넣어준다) // 1:헤드타이틀과 데이터를 준비한다. 2:준비된 데이터를 DefaultTableModel에 넣는다. // 3: DefaultTableModel을 '테이블(jTable)'에 넣는다. 4: 테이블을 'JScrollPane'에 넣는다. 5: 'JScrollPane'을 프레임에 올린다. private DefaultTableModel defaultTableModel; private Vector headings, vData; HoewonDAO dao = new HoewonDAO(); public static void main(String[] args) { HoewonTest frame = new HoewonTest(); } public HoewonTest() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 640, 480); setLocationRelativeTo(null); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JPanel pnTop = new JPanel(); pnTop.setBounds(0, 0, 624, 62); contentPane.add(pnTop); pnTop.setLayout(null); comboSearch = new JComboBox(); comboSearch.setFont(new Font("굴림", Font.BOLD, 16)); comboSearch.setModel(new DefaultComboBoxModel(new String[] {"성명", "나이", "주소"})); comboSearch.setBounds(12, 10, 109, 42); pnTop.add(comboSearch); txtSearch = new JTextField(); txtSearch.setFont(new Font("굴림", Font.BOLD, 16)); txtSearch.setBounds(133, 17, 140, 30); pnTop.add(txtSearch); txtSearch.setColumns(10); JButton btnSearch = new JButton("조건검색"); btnSearch.setFont(new Font("굴림", Font.BOLD, 16)); btnSearch.setBounds(285, 10, 105, 42); pnTop.add(btnSearch); JButton btnList = new JButton("전체검색"); btnList.setFont(new Font("굴림", Font.BOLD, 16)); btnList.setBounds(402, 10, 109, 42); pnTop.add(btnList); JButton btnExit = new JButton("종 료"); btnExit.setFont(new Font("굴림", Font.BOLD, 16)); btnExit.setBounds(521, 10, 91, 42); pnTop.add(btnExit); JPanel pnContent = new JPanel(); pnContent.setBounds(0, 64, 624, 377); contentPane.add(pnContent); pnContent.setLayout(null); // 헤드타이틀 준비(Vector형식으로) headings = new Vector(); headings.add("번호"); headings.add("성명"); headings.add("나이"); headings.add("주소"); // 데이터 준비(Vector형식으로) - 전체자료 검색 vData = dao.getList(); // 테이블 모델에 준비된 헤드타이틀과 데이터를 담는다. defaultTableModel = new DefaultTableModel(vData, headings); // (데이터자료, 헤드타이틀) // defaultTableModel을 테이블에 올린다. tblContent = new JTable(defaultTableModel); // 테이블을 JScrollPane 올려준다. JScrollPane sp = new JScrollPane(tblContent); //sp.setColumnHeaderView(tblContent); sp.setBounds(0, 10, 624, 367); // JScrollPane 프레임에 올려준다. pnContent.add(sp); setVisible(true); /* -------------------------------------------- */ // 조건검색 btnSearch.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String comboStr = (String) comboSearch.getSelectedItem(); String txtStr = txtSearch.getText(); if(txtStr.equals("")) { JOptionPane.showMessageDialog(null, "입력상자에 검색할 내용을 입력하세요"); txtSearch.requestFocus(); return; } if(comboStr.equals("성명")) { vData = dao.getSearch("name", txtStr); } else if(comboStr.equals("나이")) { if (!Pattern.matches("^[0-9]*$", txtStr)) { JOptionPane.showMessageDialog(null, "나이는 숫자로 입력하세요."); txtSearch.requestFocus(); return; } else { vData = dao.getSearch("age", txtStr); } } else if(comboStr.equals("주소")) { vData = dao.getSearch("address", txtStr); } if(vData.size() == 0) { JOptionPane.showMessageDialog(null, "검색된 자료가 없습니다."); } else { defaultTableModel.setDataVector(vData, headings); } } }); // 전체검색 btnList.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { vData = dao.getList(); //System.out.println("전체검색 : " + vData); defaultTableModel.setDataVector(vData, headings); } }); // 종료메소드 btnExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //System.exit(0); dispose(); } }); } }
▼ 실행결과는 아래와 같다.
728x90'JAVA > java Swing' 카테고리의 다른 글
[Java Swing]WindowBuilder 설치후 Design탭을 눌러도 아무것도 보이지 않을때 (0) 2022.05.13 [Java Swing]WindowBuilder 설치하기 (0) 2022.05.13