본문 바로가기
Java

Java GUI - 간단한 Table 이용방법

by leo21c 2012. 12. 1.

Spring library를 이용해서 간단한 Table을 만들기

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class awt_table {

	public static void main(String[] args) {
		
		JFrame frame = new JFrame("참가자 명단");
		frame.setPreferredSize(new Dimension(300, 150));
		frame.setLocation(500, 400);
		
		Container contentPane = frame.getContentPane();
		
		String colNames[] = {"이름", "나이", "성별"};
		//Data가 없는 Default Table을 만든다. column는 있기 때문에 아래와 같이 생성.
		DefaultTableModel model = new DefaultTableModel(colNames, 0);
		//spring table 생성
		JTable table = new JTable(model);
		//scrollpanel을 추가
		JScrollPane scrollpane = new JScrollPane(table);
		//table을 frame에 추가
		contentPane.add(scrollpane, BorderLayout.CENTER);
		
		JPanel panel = new JPanel();
		JTextField tfName = new JTextField(6);
		JTextField tfAge = new JTextField(3);
		JTextField tfSex = new JTextField(2);
		
		JButton btAdd = new JButton("Add");
		JButton btDel = new JButton("Del");
		
		//이벤트를 처리할 class 객체를 생성한다.
		AddAction adaction = new AddAction(table, tfName, tfAge, tfSex);
		RemoveAction rmaction = new RemoveAction(table);
		//이벤트 처리 객체를 연결한다.
		btAdd.addActionListener(adaction);
		btDel.addActionListener(rmaction);
		
		panel.add(new JLabel(colNames[0]));
		panel.add(tfName);
		panel.add(new JLabel(colNames[1]));
		panel.add(tfAge);
		panel.add(new JLabel(colNames[2]));
		panel.add(tfSex);
		
		panel.add(btAdd);
		panel.add(btDel);
		
		//table을 frame에 추가
		contentPane.add(panel, BorderLayout.SOUTH);
		
		//프로그램 종료
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//frame이 화면에 딱 맞도록 처리
		frame.pack();
		//화면에 표시
		frame.setVisible(true);
	}
}

- Add Button을 눌렀을 때 처리하는 이벤트 Class
 table에 row를 추가한다.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class AddAction implements ActionListener {

	JTable table;
	JTextField tfName;
	JTextField tfAge;
	JTextField tfSex;
	
	//생성자에게 table과 기타 정보를 넘겨준다.
	public AddAction(JTable table, JTextField tfName, 
			JTextField tfAge, JTextField tfSex) {
		this.table = table;
		this.tfName = tfName;
		this.tfAge = tfAge;
		this.tfSex = tfSex;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		String str[] = new String[3];
		str[0] = tfName.getText();
		str[1] = tfAge.getText();
		str[2] = tfSex.getText();
		
		//생성자로부터 받은 table 객체의 타입을 변경한다.
		DefaultTableModel model = (DefaultTableModel)table.getModel();
		//table에 object를 추가한다.
		model.addRow(str);
	}
}

- Del Button을 눌렀을 때 처리하는 이벤트 Class
 table의 row를 선택하고 del을 누르면 table에서 row가 삭제된다.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class RemoveAction implements ActionListener {

	JTable table;
	
	//생성자에게 table과 기타 정보를 넘겨준다.
	public RemoveAction(JTable table) {
		this.table = table;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		int row = table.getSelectedRow();
		if (row >= 0) {
			//생성자로부터 받은 table 객체의 타입을 변경한다.
			DefaultTableModel model = (DefaultTableModel)table.getModel();
			//table에 object를 삭제한다.
			model.removeRow(row);
		}
	}
}

실행하면 아래와 같은 화면이 표시된다.




'Java' 카테고리의 다른 글

객체지향이란? 객체지향 설계원칙?  (0) 2012.12.03
Java GUI - Image  (0) 2012.12.01
Java GUI - 간단한 메모장 만들기  (0) 2012.12.01
Java GUI - Event  (0) 2012.12.01
JAVA GUI - Frame, Panel  (0) 2012.12.01