Advertisement
Guest User

code

a guest
Mar 4th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.52 KB | None | 0 0
  1. package Login;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.EventQueue;
  7. import java.awt.Toolkit;
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. import javax.swing.border.EmptyBorder;
  11. import javax.swing.event.CellEditorListener;
  12. import javax.swing.event.ChangeEvent;
  13. import javax.swing.event.RowSorterEvent;
  14. import javax.swing.event.RowSorterListener;
  15. import javax.swing.table.DefaultTableModel;
  16. import javax.swing.table.TableCellEditor;
  17. import javax.swing.table.TableCellRenderer;
  18. import javax.swing.table.TableColumn;
  19. import javax.swing.table.TableModel;
  20. import javax.swing.table.TableRowSorter;
  21. import javax.swing.JMenuBar;
  22. import javax.swing.JMenu;
  23. import javax.swing.JMenuItem;
  24. import javax.swing.JOptionPane;
  25. import javax.swing.AbstractAction;
  26. import javax.swing.ButtonModel;
  27. import javax.swing.JButton;
  28. import javax.swing.JTable;
  29. import javax.swing.KeyStroke;
  30. import javax.swing.RowSorter;
  31. import javax.swing.SortOrder;
  32. import javax.swing.JScrollPane;
  33. import java.awt.event.ActionListener;
  34. import java.awt.event.KeyEvent;
  35. import java.awt.event.MouseAdapter;
  36. import java.awt.event.MouseEvent;
  37. import java.sql.Connection;
  38. import java.sql.DriverManager;
  39. import java.sql.ResultSet;
  40. import java.sql.SQLException;
  41. import java.sql.Statement;
  42. import java.util.ArrayList;
  43. import java.util.Arrays;
  44. import java.util.Comparator;
  45. import java.util.EventObject;
  46. import java.util.List;
  47. import java.util.Objects;
  48. import java.awt.event.ActionEvent;
  49. import java.awt.Font;
  50.  
  51. public class database extends JFrame {
  52.  
  53. /**
  54. *
  55. */
  56. private static final long serialVersionUID = 1L;
  57. private JPanel contentPane;
  58. private JTable table;
  59.  
  60. // shit idea starts from here
  61.  
  62.  
  63.  
  64. // shit idea ends here
  65. /**
  66. * Launch the application.
  67. */
  68. public static void main(String[] args) {
  69. EventQueue.invokeLater(new Runnable() {
  70. public void run() {
  71. try {
  72. database frame = new database();
  73. frame.setVisible(true);
  74. } catch (Exception e) {
  75. e.printStackTrace();
  76. }
  77. }
  78. });
  79. }
  80.  
  81. /**
  82. * Create the frame.
  83. */
  84. public database() {
  85. setResizable(false);
  86. Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
  87. setBounds(100, 100, 607, 470);
  88. setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);
  89. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  90.  
  91.  
  92. JMenuBar menuBar = new JMenuBar();
  93. setJMenuBar(menuBar);
  94.  
  95. JMenu mnMenu = new JMenu("Menu");
  96. menuBar.add(mnMenu);
  97.  
  98. JMenuItem mntmOpenGuestbook = new JMenuItem("Open guestbook");
  99. mntmOpenGuestbook.setMnemonic(KeyEvent.VK_O);
  100. mntmOpenGuestbook.setAccelerator(
  101. KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));
  102. mntmOpenGuestbook.addActionListener(new ActionListener() {
  103. public void actionPerformed(ActionEvent e) {
  104. try{
  105. Connection conn = DriverManager.
  106. getConnection("jdbc:mysql://localhost:3306/guestbook",
  107. "root", "admin");
  108. System.out.println(conn);
  109. Statement stmt = conn.createStatement();
  110. String query = "SELECT * FROM GUESTS";
  111. ResultSet rs = stmt.executeQuery(query);
  112.  
  113. DefaultTableModel model = new DefaultTableModel(new String[]{"NUMBER","NAME", "SURNAME", "EMAIL", "COMMENTS","ACTIONS"}, 0);
  114.  
  115.  
  116. while (rs.next())
  117. {
  118. String id = rs.getString("ID_GUESTS");
  119. String firstName = rs.getString("FIRST_NAME");
  120. String lastName = rs.getString("SURNAME");
  121. String email = rs.getString("EMAIL");
  122. String comments = rs.getString("COMMENTS");
  123. String empty = "";
  124. model.addRow(new Object[]{id,firstName, lastName, email, comments, empty});
  125.  
  126. }table.setModel(model);
  127. table.createDefaultColumnsFromModel();
  128. TableColumn column = table.getColumnModel().getColumn(5);
  129. column.setCellRenderer(new ButtonsRenderer());
  130. column.setCellEditor(new ButtonsEditor(table));
  131.  
  132.  
  133. // ENABLE SORTING
  134. table.setAutoCreateRowSorter(true);
  135.  
  136. TableRowSorter<TableModel> sorter = new TableRowSorter<>(table.getModel());
  137. table.setRowSorter(sorter);
  138. List<RowSorter.SortKey> sortKeys = new ArrayList<>();
  139.  
  140. // SORT BY MULTIPE COLUMNS
  141. int columnIndexForName = 2;
  142. sortKeys.add(new RowSorter.SortKey(columnIndexForName, SortOrder.ASCENDING));
  143.  
  144. int columnIndexForSurname = 1;
  145. sortKeys.add(new RowSorter.SortKey(columnIndexForSurname, SortOrder.ASCENDING));
  146.  
  147. sorter.setSortKeys(sortKeys);
  148.  
  149. // LISTEN TO SORTING EVENTS
  150. sorter.addRowSorterListener(new RowSorterListener() {
  151. @Override
  152. public void sorterChanged(RowSorterEvent evt) {
  153. int indexOfNoColumn = 0;
  154. for (int i = 0; i < table.getRowCount(); i++) {
  155. table.setValueAt(i + 1, i, indexOfNoColumn);
  156. }
  157. }
  158. });
  159.  
  160. // DISABLE SORTING FOR A SPECIFIC COLUMN
  161. sorter.setSortable(5, false);
  162. //sorter.setSortable(0, false);
  163.  
  164. // SPECIFY COMPARATOR FOR SORTING A SPECIFIC COLUMN
  165. sorter.setComparator(columnIndexForName, new Comparator<String>() {
  166.  
  167. public int compare(String name1, String name2) {
  168. return name1.compareTo(name2);
  169. }
  170. });
  171. sorter.sort();
  172. table.setDefaultEditor(Object.class, null);
  173. table.setAutoCreateColumnsFromModel(false);
  174. int par1 = 35;
  175. //table.removeColumn(table.getColumnModel().getColumn(0));
  176. table.setRowHeight(par1);
  177.  
  178.  
  179.  
  180.  
  181. for (int column1 = 0; column1 < table.getColumnCount(); column1++)
  182. {
  183. TableColumn tableColumn = table.getColumnModel().getColumn(column1);
  184. int preferredWidth = tableColumn.getMinWidth();
  185. int maxWidth = tableColumn.getMaxWidth();
  186.  
  187. for (int row = 0; row < table.getRowCount(); row++)
  188. {
  189. TableCellRenderer cellRenderer = table.getCellRenderer(row, column1);
  190. Component c = table.prepareRenderer(cellRenderer, row, column1);
  191. int width = c.getPreferredSize().width + table.getIntercellSpacing().width;
  192. preferredWidth = Math.max(preferredWidth, width);
  193.  
  194. // We've exceeded the maximum width, no need to check other rows
  195.  
  196. if (preferredWidth >= maxWidth)
  197. {
  198. preferredWidth = maxWidth;
  199. break;
  200. }
  201. }
  202.  
  203. tableColumn.setPreferredWidth( preferredWidth );}
  204.  
  205.  
  206. }catch(SQLException e3){}
  207.  
  208. }
  209.  
  210. });
  211. mnMenu.add(mntmOpenGuestbook);
  212.  
  213. JMenuItem mntmSaveAs = new JMenuItem("Save as...");
  214. mnMenu.add(mntmSaveAs);
  215. mntmSaveAs.setMnemonic(KeyEvent.VK_S);
  216. mntmSaveAs.setAccelerator(
  217. KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK));
  218.  
  219. JMenuItem mntmExit = new JMenuItem("Exit");
  220. mntmExit.setMnemonic(KeyEvent.VK_Q);
  221. mntmExit.setAccelerator(
  222. KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
  223. mntmExit.addActionListener(new ActionListener() {
  224. public void actionPerformed(ActionEvent e) {
  225. System.exit(0);
  226. }
  227. });
  228. mnMenu.add(mntmExit);
  229.  
  230. JMenu mnHelp = new JMenu("Help");
  231. menuBar.add(mnHelp);
  232.  
  233. JMenuItem mntmAbout = new JMenuItem("About");
  234. mnHelp.add(mntmAbout);
  235. mntmAbout.setMnemonic(KeyEvent.VK_A);
  236. mntmAbout.setAccelerator(
  237. KeyStroke.getKeyStroke(KeyEvent.VK_H, Event.CTRL_MASK));
  238. contentPane = new JPanel();
  239. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  240. setContentPane(contentPane);
  241. contentPane.setLayout(null);
  242.  
  243. JButton btnAdd = new JButton("Add");
  244. btnAdd.addActionListener(new ActionListener() {
  245. public void actionPerformed(ActionEvent e) {
  246. FeedbackForm form = new FeedbackForm();
  247. form.setVisible(true);
  248. form.setLocationRelativeTo(null);
  249.  
  250.  
  251.  
  252. // FORM settings
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. }
  269. });
  270. btnAdd.setBounds(492, 377, 89, 23);
  271. contentPane.add(btnAdd);
  272.  
  273. JScrollPane scrollPane = new JScrollPane();
  274. scrollPane.setBounds(10, 11, 571, 355);
  275. contentPane.add(scrollPane);
  276.  
  277. table = new JTable();
  278. table.setFont(new Font("Times New Roman", Font.PLAIN, 12));
  279. scrollPane.setViewportView(table);
  280.  
  281.  
  282.  
  283. }
  284.  
  285.  
  286.  
  287.  
  288.  
  289. /* Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
  290. setBounds(100, 100, 607, 470);
  291. setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);
  292. */
  293.  
  294. }
  295.  
  296.  
  297.  
  298.  
  299. /*
  300.  
  301.  
  302.  
  303. FROM HERE ON THERE ARE THE COLUMN BUTTON SETTINGS
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312. */
  313. class ButtonsPanel extends JPanel {
  314. /**
  315. *
  316. */
  317. private static final long serialVersionUID = 1L;
  318. public final List<JButton> buttons = Arrays.asList(new JButton("delete"), new JButton("edit"));
  319. protected ButtonsPanel() {
  320. super();
  321. setOpaque(true);
  322. for (JButton b: buttons) {
  323. b.setFocusable(false);
  324. b.setRolloverEnabled(false);
  325. add(b);
  326. }
  327. }
  328. // @Override public void updateUI() {
  329. // super.updateUI();
  330. // }
  331. }
  332.  
  333. class ButtonsRenderer extends ButtonsPanel implements TableCellRenderer {
  334. /**
  335. *
  336. */
  337. private static final long serialVersionUID = 1L;
  338. @Override public void updateUI() {
  339. super.updateUI();
  340. setName("Table.cellRenderer");
  341. }
  342. @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  343. this.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
  344. return this;
  345. }
  346. }
  347.  
  348. class ViewAction extends AbstractAction {
  349. /**
  350. *
  351. */
  352. private static final long serialVersionUID = 1L;
  353. private final JTable table;
  354. protected ViewAction(JTable table) {
  355. super("delete");
  356. this.table = table;
  357. }
  358. @Override public void actionPerformed(ActionEvent e) {
  359.  
  360. // MAKE ROW DELEATABLE
  361.  
  362.  
  363. int row = table.convertRowIndexToModel(table.getEditingRow());
  364. Object o = table.getModel().getValueAt(row, 0);
  365. JOptionPane.showMessageDialog(table, "deleting: " + o);
  366. try
  367. {
  368. Class.forName("com.mysql.jdbc.Driver");
  369. Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/guestbook",
  370. "root", "admin");
  371.  
  372. java.sql.PreparedStatement st = connection.prepareStatement("DELETE FROM Guests WHERE ID_GUESTS = " + o + ";");
  373. st.executeUpdate();
  374.  
  375.  
  376. }
  377. catch(Exception e1)
  378. {
  379. System.out.println(e1);
  380. }
  381.  
  382.  
  383. }
  384. }
  385.  
  386. class EditAction extends AbstractAction {
  387. /**
  388. *
  389. */
  390. private static final long serialVersionUID = 1L;
  391. private final JTable table;
  392. protected EditAction(JTable table) {
  393. super("edit");
  394. this.table = table;
  395. }
  396. @Override public void actionPerformed(ActionEvent e) {
  397.  
  398.  
  399. // MAKE CELL EDITEABLE
  400.  
  401. //Object o = table.getModel().getValueAt(table.getSelectedRow(), 0);
  402. int row = table.convertRowIndexToModel(table.getEditingRow());
  403. Object o = table.getModel().getValueAt(row, 0);
  404.  
  405. table.isCellEditable(row, 0);
  406.  
  407.  
  408.  
  409. }
  410. }
  411.  
  412.  
  413. class ButtonsEditor extends ButtonsPanel implements TableCellEditor {
  414. /**
  415. *
  416. */
  417. private static final long serialVersionUID = 1L;
  418. protected transient ChangeEvent changeEvent;
  419. protected final JTable table;
  420. private class EditingStopHandler extends MouseAdapter implements ActionListener {
  421. @Override public void mousePressed(MouseEvent e) {
  422. Object o = e.getSource();
  423. if (o instanceof TableCellEditor) {
  424. actionPerformed(null);
  425. } else if (o instanceof JButton) {
  426. //DEBUG: view button click -> control key down + edit button(same cell) press -> remain selection color
  427. ButtonModel m = ((JButton) e.getComponent()).getModel();
  428. if (m.isPressed() && table.isRowSelected(table.getEditingRow()) && e.isControlDown()) {
  429. setBackground(table.getBackground());
  430. }
  431. }
  432. }
  433. @Override public void actionPerformed(ActionEvent e) {
  434. EventQueue.invokeLater(() -> fireEditingStopped());
  435. }
  436. }
  437. protected ButtonsEditor(JTable table) {
  438. super();
  439. this.table = table;
  440. buttons.get(0).setAction(new ViewAction(table));
  441. buttons.get(1).setAction(new EditAction(table));
  442.  
  443. EditingStopHandler handler = new EditingStopHandler();
  444. for (JButton b: buttons) {
  445. b.addMouseListener(handler);
  446. b.addActionListener(handler);
  447. }
  448. addMouseListener(handler);
  449. }
  450. @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
  451. this.setBackground(table.getSelectionBackground());
  452. return this;
  453. }
  454. @Override public Object getCellEditorValue() {
  455. return "";
  456. }
  457.  
  458. //Copied from AbstractCellEditor
  459. //protected EventListenerList listenerList = new EventListenerList();
  460. //protected transient ChangeEvent changeEvent;
  461. @Override public boolean isCellEditable(EventObject e) {
  462. return true;
  463. }
  464. @Override public boolean shouldSelectCell(EventObject anEvent) {
  465. return true;
  466. }
  467. @Override public boolean stopCellEditing() {
  468. fireEditingStopped();
  469. return true;
  470. }
  471. @Override public void cancelCellEditing() {
  472. fireEditingCanceled();
  473. }
  474. @Override public void addCellEditorListener(CellEditorListener l) {
  475. listenerList.add(CellEditorListener.class, l);
  476. }
  477. @Override public void removeCellEditorListener(CellEditorListener l) {
  478. listenerList.remove(CellEditorListener.class, l);
  479. }
  480. public CellEditorListener[] getCellEditorListeners() {
  481. return listenerList.getListeners(CellEditorListener.class);
  482. }
  483. protected void fireEditingStopped() {
  484. // Guaranteed to return a non-null array
  485. Object[] listeners = listenerList.getListenerList();
  486. // Process the listeners last to first, notifying
  487. // those that are interested in this event
  488. for (int i = listeners.length - 2; i >= 0; i -= 2) {
  489. if (listeners[i] == CellEditorListener.class) {
  490. // Lazily create the event:
  491. if (Objects.isNull(changeEvent)) {
  492. changeEvent = new ChangeEvent(this);
  493. }
  494. ((CellEditorListener) listeners[i + 1]).editingStopped(changeEvent);
  495. }
  496. }
  497. }
  498. protected void fireEditingCanceled() {
  499. // Guaranteed to return a non-null array
  500. Object[] listeners = listenerList.getListenerList();
  501. // Process the listeners last to first, notifying
  502. // those that are interested in this event
  503. for (int i = listeners.length - 2; i >= 0; i -= 2) {
  504. if (listeners[i] == CellEditorListener.class) {
  505. // Lazily create the event:
  506. if (Objects.isNull(changeEvent)) {
  507. changeEvent = new ChangeEvent(this);
  508. }
  509. ((CellEditorListener) listeners[i + 1]).editingCanceled(changeEvent);
  510. }
  511. }
  512. }
  513. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement