JAVA JTable 실습 예제

Programming/JAVA,JSP 2013. 8. 24. 12:07 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

package com.tansanc.tistory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

class Info
{
	public String title;
	public String publisher;
	public String year;
	public int price;
	public long contentLength = 0L;

	public Info(String title, String publisher, String year, int price)
	{
		this.title = title;
		this.publisher = publisher;
		this.year = year;
		this.price = price;
	}
}

class InfoTableModel extends AbstractTableModel
{
	private static final long serialVersionUID = 7932826462497464190L;
	public ArrayList pages;

	public InfoTableModel()
	{
		pages = new ArrayList();
	}

	public int getColumnCount()
	{
		return 4;
	}

	public int getRowCount()
	{
		return pages.size();
	}

	public void addInfo(Info page)
	{
		int idx = pages.size();
		pages.add(page);
		fireTableRowsInserted(idx, idx); // 반드시 호출해야한다.
	}

	public Object getValueAt(int rowIndex, int columnIndex)
	{
		Info info = pages.get(rowIndex);
		switch (columnIndex)
		{
		case 0:
			return info.title;
		case 1:
			return info.publisher;
		case 2:
			return info.year;
		case 3:
			return info.price;
		case 4:
			return info.contentLength;
		default:
			return "invalid";
		}
	}
}

class myFrame extends JFrame
{
	JTable table;

	public myFrame()
	{
		// TODO Auto-generated constructor stub
		setSize(600, 400);
		setVisible(true);

		InfoTableModel model = new InfoTableModel();
		TableColumnModel columnModel = new DefaultTableColumnModel();
		TableCellRenderer renderer = new DefaultTableCellRenderer(); // 기본구현
		model.addInfo(new Info("1", "1", "1", 50000));

		try
		{
			Connection con = ConnectDatabase.makeConnection();
			Statement stmt;
			stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT * FROM books");
			while (rs.next())
			{
				int book_id = rs.getInt("book_id");
				String title = rs.getString("title");
				String publisher = rs.getString("publisher");
				String year = rs.getString("year");
				int price = rs.getInt("price");
				System.out.println(title + publisher + year + price);
				model.addInfo(new Info(title, publisher, year, price));
			}

		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("done");
		TableColumn column = new TableColumn(0);
		column.setCellRenderer(renderer); // 이렇게 하지 않아도 알아서 제공된다.
		column.setHeaderValue("title");
		columnModel.addColumn(column);

		column = new TableColumn(1);
		column.setHeaderValue("publisher");
		columnModel.addColumn(column);

		column = new TableColumn(2);
		column.setHeaderValue("year");
		columnModel.addColumn(column);

		column = new TableColumn(3);
		column.setHeaderValue("price");
		columnModel.addColumn(column);

		table = new JTable(model, columnModel);
		add(table);
	}

}

public class ConnectDatabase
{
	public static Connection makeConnection()
	{
		String url = "jdbc:mysql://localhost/book_db";
		String id = "root";
		String password = "root";
		Connection con = null;
		try
		{
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("드라이버 적재 성공");
			con = DriverManager.getConnection(url, id, password);
			System.out.println("데이터베이스 연결 성공");
		} catch (ClassNotFoundException e)
		{
			System.out.println("드라이버를 찾을 수 없습니다.");
		} catch (SQLException e)
		{
			System.out.println("연결에 실패하였습니다.");
		}
		return con;
	}

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


'Programming > JAVA,JSP' 카테고리의 다른 글

JAVA 소수를 판단하는 GUI 프로그램  (0) 2013.12.21
JAVA 버블 정렬  (0) 2013.11.30
JAVA 채팅 프로그램 소스  (0) 2013.08.23
JAVA 채팅 클라이언트  (0) 2013.08.23
JAVA 계산기 프로그램 부분완성  (0) 2013.08.16