Инструменты пользователя

Инструменты сайта


prog:jtable-sample
CusList.java
/*
 * @author Alexey Leonchik
 * <alexey@leonchik.ru>
 * 
 * Пн. 23 июня 2014
 */
 
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
 
class MainForm extends JFrame {
	TableColumnModel colmodel;
	DefaultTableModel model;
	DataManager dm;
 
	MainForm() {
		//setExtendedState(JFrame.MAXIMIZED_BOTH);
		setTitle("JTable");
		setSize(500,300);
		setLayout(new FlowLayout());
 
		dm = new DataManager();
 
		// Добавим тестовые данные в базу
		// addSampleDataToDatabase();
 
		// Создаем модель данных для JTable
		model = new DefaultTableModel();
 
		// Добавим имена столбцов м модель
		model.addColumn("ID");
		model.addColumn("Sex");
		model.addColumn("Name");
		model.addColumn("Address");
		model.addColumn("Email");
		model.addColumn("Phone");
 
		// Читаем данные из базы и кладем их в модель данных
		dm.getData(model);
 
		// Создаем нашу таблицу
		JTable table = new JTable(model);
 
		/*
		 * Тут самое интересное.
		 * Изменен заголовк таблицы, отрисовка ячеек, и столбцов
		 * Изменен редактор ячеек по умолчанию
		 */
		TableColumn column = null;
		MyHeaderRenderer headerRenderer = new MyHeaderRenderer(Color.BLUE, new Font("Arial", Font.BOLD, 15));
 
		for(int i = 0; i < model.getColumnCount(); i++) {
			column = table.getColumnModel().getColumn(i);
			column.setHeaderRenderer(headerRenderer);
			column.setPreferredWidth(100);
			MyCellRenderer cellRenderer;
			Color cellBg;
 
			if(i % 2 == 0) {
				cellBg = Color.RED;
			} else {
				cellBg = Color.LIGHT_GRAY;
			}
 
			cellRenderer = new MyCellRenderer(cellBg, new Font("Arial", Font.BOLD, 12));
			column.setCellRenderer(cellRenderer);
 
			if(i == 0) {
				column.setPreferredWidth(40);
				JTextField txt = new JTextField();
				txt.setEditable(false);
				DefaultCellEditor editor = new DefaultCellEditor(txt);
				column.setCellEditor(editor);
			}
 
			if(i == 1) {
				column.setPreferredWidth(40);
				JComboBox box = new JComboBox();
				box.addItem("М");
				box.addItem("Ж");
				DefaultCellEditor editor = new DefaultCellEditor(box);
				column.setCellEditor(editor);
			}
		}
 
		JScrollPane scrollpane = new JScrollPane(table);
		add(scrollpane);
 
		// При закрытии окна - закрываем соединения
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				try {
					dm.closeConnection();
				} catch (SQLException se) {
					se.printStackTrace();
				}
				System.exit(0);
			}
		});
 
		setVisible(true);
	} // End Mainform
 
	public void addSampleDataToDatabase(){
		dm.insertSampleData(1, "Алексей Леончик","М","Адресс Леончик","alexey@leonchik.ru","+7 924 259 53 53");
		dm.insertSampleData(2, "Ольга Чистова","Ж","Адрес Чистова","ochistova@gmail.com","+7 914 123 12 34");
		dm.insertSampleData(3, "Сергей Клетчин","М","Адрес Клетчин","kletchin@gmail.com","+7 964 335 32 76");
		dm.insertSampleData(4, "Владимир Тырин","М","Адрес Тырин","v-tirin@gmail.com","+7 964 773 12 99");
		dm.insertSampleData(5, "Алина Бурматова","Ж","Адрес Бурматова","a-burmatova@gya.ru","+7 964 999 32 76");
	}
}
 
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
class MyCellRenderer extends DefaultTableCellRenderer {
	Color bgColor = null;
	Font font = null;
 
	public MyCellRenderer(Color c, Font f) {
		super();
		bgColor = c;
		font = f;
	}
 
	public void setValue(Object value) {
		setText(value.toString());
		setBackground(bgColor);
		setFont(font);
	}
}
 
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
class MyHeaderRenderer extends DefaultTableCellRenderer {
	Color bgColor = null;
	Font font = null;
 
	public MyHeaderRenderer(Color c, Font f) {
		super();
		bgColor = c;
		font = f;
	}
 
	public void setValue(Object value) {
		setText(value.toString());
		setBackground(bgColor);
		setFont(font);
	}
}
 
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
class DataManager {
	Connection c = null;
	Statement stm = null;
 
	DataManager() {
		try {
			Class.forName("org.sqlite.JDBC");
			c = DriverManager.getConnection("jdbc:sqlite:sales.db");
			stm = c.createStatement();
			/*
			String sql = "CREATE TABLE tblcustomers " +
				"(Id INT PRIMARY KEY, " +
				"Name TEXT NOT NULL, " +
				"Sex TEXT NOT NULL, " +
				" Address TEXT NOT NULL, " +
				"Email TEXT NOT NULL, " +
				"Phone TEXT NOT NULL)";
			stm.executeUpdate(sql);
			*/
		} catch ( Exception e ) {
			e.printStackTrace();
			System.exit(0);
		}
	} // End Constructor DataManager
 
	public void insertSampleData(int id, String name, String sex, String address, String email, String phone) {
		String sqlinsertion = "INSERT INTO tblcustomers " +
			"(Id, Name, Sex, Address, Email, Phone) " +
			"VALUES (" + 
			id + ", '" +
			sex + "', '" +
			name + "', '" + 
			address + "', '" + 
			email + "', '" +
			phone +"')";
 
		try {
			stm.executeUpdate(sqlinsertion);
		} catch(SQLException se) { se.printStackTrace(); }
	}
 
	public void getData(DefaultTableModel datamodel) {
		String sqlselection = "SELECT * FROM tblcustomers";
 
		try {
			ResultSet result=stm.executeQuery(sqlselection);
 
			if(result != null) {
				while(result.next()) {
					datamodel.addRow(new Object[]{result.getInt("Id"),
						result.getString("Name"),
						result.getString("Sex"),
						result.getString("Address"),
						result.getString("Email"),
						result.getString("Phone")});
				}
			}
		} catch(SQLException se) { se.printStackTrace(); }
	}
 
	public void closeConnection() throws SQLException {
		stm.close();
		c.close();
	}
} // End Class DataManager
 
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
public class CusList {
	public static void main(String[] args){
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					new MainForm();
				}
				catch (Exception e) {	e.printStackTrace(); }
			}
		});
	}
}
prog/jtable-sample.txt · Последнее изменение: 2014/06/23 21:46 (внешнее изменение)