/* * @author Alexey Leonchik * * * Пн. 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(); } } }); } }