package tampilan; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import fungsi.*; import database.*; import java.awt.*; import java.awt.Dialog.ModalityType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputMethodListener; import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; /** * @author vilian18 * */ public class Edit_user extends JFrame { private JPanel panelCari = new JPanel(); private JLabel lblCari = new JLabel("Username : "); private JTextField txtCari = new JTextField(15); private JButton btnCari = new JButton("Cari"); private JButton btnEdit = new JButton("Edit"); private JButton btnHps = new JButton("Hapus"); private JPanel panelTable = new JPanel(); public String username = ""; public int rowx; public int columnx; private dbAdmin db = new dbAdmin(); private DefaultTableModel dataModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { if (column >= 4) { return true; } else { return false; } } }; private JTable table = new JTable(dataModel); private JScrollPane scroll = new JScrollPane(table); private Connection koneksi; private int id; private String akses; private String nama; private String user; public Edit_user() { } public Edit_user(String title) { super(title); super.setDefaultCloseOperation(DISPOSE_ON_CLOSE); super.setSize(600, 500); super.setLocationRelativeTo(null); super.setResizable(false); Container kontainer = getContentPane(); kontainer.setLayout(new FlowLayout()); panelCari.setLayout(new GridBagLayout()); panelTable.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); panelCari.setBorder(BorderFactory.createTitledBorder("Cari Data")); c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(10, 10, 10, 10); c.gridx = 0; c.gridy = 0; panelCari.add(lblCari, c); c.gridx = 1; c.gridy = 0; panelCari.add(txtCari, c); c.gridx = 2; c.gridy = 0; panelCari.add(btnCari, c); scroll.setPreferredSize(new Dimension(500, 300)); c.gridx = 0; c.gridy = 0; panelTable.add(scroll, c); dataModel.addColumn("ID"); dataModel.addColumn("Hak Akses"); dataModel.addColumn("Nama User"); dataModel.addColumn("Username"); dataModel.addColumn("Edit User"); dataModel.addColumn("Hapus User"); table.getColumnModel().getColumn(0).setPreferredWidth(10); table.getColumnModel().getColumn(2).setPreferredWidth(100); scroll.setVisible(true); // isiTable(); createTable(); btnCari(); tekanEnter(); kontainer.add(panelCari); kontainer.add(panelTable); } public void createTable() { /* * for (int i = dataModel.getRowCount() - 1; i > -1; i--) { * dataModel.removeRow(i); } */ // tambah tombol edit table.getColumnModel().getColumn(4) .setCellRenderer(new ButtonRenderer()); table.getColumnModel().getColumn(4) .setCellEditor(new ButtonEditor(new JCheckBox())); // tambah tombol hapus table.getColumnModel().getColumn(5) .setCellRenderer(new ButtonRenderer()); table.getColumnModel().getColumn(5) .setCellEditor(new ButtonEditor(new JCheckBox())); Vector<Admin> vAdmin = db.viewAll(); for (int i = 0; i < vAdmin.size(); i++) { dataModel.addRow(new Object[] { vAdmin.elementAt(i).getId(), vAdmin.elementAt(i).getAkses(), vAdmin.elementAt(i).getNama(), vAdmin.elementAt(i).getUsername(), "Edit", "Hapus" }); } table.setModel(dataModel); } public void updateTable() { Vector<Admin> vAdmin = db.viewAll(); for (int i = 0; i < vAdmin.size(); i++) { dataModel.addRow(new Object[] { vAdmin.elementAt(i).getId(), vAdmin.elementAt(i).getAkses(), vAdmin.elementAt(i).getNama(), vAdmin.elementAt(i).getUsername(), "Edit", "Hapus" }); } table.setModel(dataModel); } public static void main(String[] args) { // TODO Auto-generated method stub Edit_user edit = new Edit_user("Manage User"); edit.setVisible(true); } public String getUsername() { return username; } /* * public void isiTable() { try { * Class.forName(Config.DATABASE_DRIVER).newInstance(); koneksi = * DriverManager.getConnection(Config.URL, Config.username, * Config.password); } catch (InstantiationException | * IllegalAccessException | ClassNotFoundException | SQLException e) { * e.printStackTrace(); } * * int n = 0; int row = dataModel.getRowCount(); for (int i = 0; i < row; * i++) { dataModel.removeRow(0); } * * try { Statement stmt = koneksi.createStatement(); ResultSet rs = * stmt.executeQuery("SELECT * FROM Admin"); while (rs.next()) { int id = * rs.getInt(1); akses = rs.getString(2); nama = rs.getString(3); user = * rs.getString(4); n += 1; Object[] a = { id, akses, nama, user, "Edit", * "Hapus" }; dataModel.addRow(a); } * * koneksi.close(); stmt.close(); rs.close(); } * * catch (SQLException x) { x.printStackTrace(); } * * } */ public void btnCari() { btnCari.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent z) { try { Class.forName(Config.DATABASE_DRIVER).newInstance(); koneksi = DriverManager.getConnection(Config.URL, Config.username, Config.password); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e) { e.printStackTrace(); } int n = 0; int row = dataModel.getRowCount(); for (int i = 0; i < row; i++) { dataModel.removeRow(0); } try { Statement stmt = koneksi.createStatement(); ResultSet rs = stmt .executeQuery("SELECT * FROM Admin where username = '" + txtCari.getText() + "'"); while (rs.next()) { int id = rs.getInt(1); akses = rs.getString(2); nama = rs.getString(3); user = rs.getString(4); n += 1; Object[] a = { id, akses, nama, user, "Edit", "Hapus" }; dataModel.addRow(a); } } catch (SQLException x) { x.printStackTrace(); } } }); } public void tekanEnter() { if (txtCari.getText().equalsIgnoreCase(null) || txtCari.getText().equalsIgnoreCase("")) { // isiTable(); } txtCari.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent z) { try { Class.forName(Config.DATABASE_DRIVER).newInstance(); koneksi = DriverManager.getConnection(Config.URL, Config.username, Config.password); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e) { e.printStackTrace(); } int n = 0; int row = dataModel.getRowCount(); for (int i = 0; i < row; i++) { dataModel.removeRow(0); } try { Statement stmt = koneksi.createStatement(); ResultSet rs = stmt .executeQuery("SELECT * FROM Admin where username = '" + txtCari.getText() + "'"); while (rs.next()) { int id = rs.getInt(1); akses = rs.getString(2); nama = rs.getString(3); user = rs.getString(4); n += 1; Object[] a = { id, akses, nama, user, "Edit", "Hapus" }; dataModel.addRow(a); } } catch (SQLException x) { x.printStackTrace(); } } }); } class ButtonRenderer extends JButton implements TableCellRenderer { public ButtonRenderer() { setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(UIManager.getColor("Button.background")); } setText((value == null) ? "" : value.toString()); return this; } } class ButtonEditor extends DefaultCellEditor { protected JButton button; private String label; private boolean isDeleteRow = false; private boolean isPushed; public ButtonEditor(JCheckBox checkBox) { super(checkBox); button = new JButton(); button.setOpaque(true); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fireEditingStopped(); } }); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (isSelected) { button.setForeground(table.getSelectionForeground()); button.setBackground(table.getSelectionBackground()); } else { button.setForeground(table.getForeground()); button.setBackground(table.getBackground()); } // label = (value == null) ? "" : value.toString(); username = table.getValueAt(row, 3).toString(); rowx = row; columnx = column; label = (value == null) ? "" : value.toString(); button.setText(label); isPushed = true; return button; } public Object getCellEditorValue() { if (isPushed) { // // // JOptionPane.showMessageDialog(button, username + ": Ouch!"); // System.out.println(label + ": Ouch!"); showEdit(rowx, columnx); } isPushed = false; return new String(label); } public boolean stopCellEditing() { isPushed = false; return super.stopCellEditing(); } protected void fireEditingStopped() { super.fireEditingStopped(); if (isDeleteRow) { DefaultTableModel tableModel = (DefaultTableModel) table .getModel(); tableModel.removeRow(table.getSelectedRow()); table.addNotify(); // tableModel.fireTableDataChanged(); } isDeleteRow = false; } public void showEdit(int row, int column) { int jumlah = dataModel.getRowCount() - 1; int tmpCek = dataModel.getRowCount(); if (column == 4) { Edit_user ed = new Edit_user(""); Final_edit edit_final = new Final_edit(ed, "Edit User " + username, username, ModalityType.APPLICATION_MODAL); edit_final.setVisible(true); edit_final.setLocationRelativeTo(null); } else if (column == 5) { int pilih = JOptionPane.showConfirmDialog(null, "Yakin ingin menghapus " + username + " ?", "Delete User?", JOptionPane.YES_NO_OPTION); if (pilih == 0) { try { hapusData(username); isDeleteRow = true; JOptionPane.showMessageDialog(null, "User telah dihapus!", "User Deleted!", JOptionPane.INFORMATION_MESSAGE); username = ""; } catch (Exception e) { // updateTable(); } } } } public void hapusData(String username) { try { Class.forName(Config.DATABASE_DRIVER).newInstance(); koneksi = DriverManager.getConnection(Config.URL, Config.username, Config.password); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e) { e.printStackTrace(); } try { Statement stmt = koneksi.createStatement(); ResultSet rs = stmt .executeQuery("delete from Admin where username ='" + username + "'"); // JOptionPane.showMessageDialog(null, "Data Berhasil dihapus", // "Delete Succes!", JOptionPane.INFORMATION_MESSAGE); koneksi.close(); rs.close(); stmt.close(); isPushed = true; } catch (SQLException z) { z.printStackTrace(); } } } public class Final_edit extends JDialog { private Connection koneksi; private String password; private JLabel lblID = new JLabel("ID"); private JLabel lblNo = new JLabel("No"); private JLabel lblNama = new JLabel("Nama"); private JTextField txtNama = new JTextField(15); private JLabel lblUser = new JLabel("Username : "); private JTextField txtUser = new JTextField(); private JLabel lblPass2 = new JLabel("Password Baru : "); private JTextField txtPass2 = new JTextField(); private JLabel lblAkses = new JLabel("Hak Akses : "); String[] akses = { "Administrator", "Kasir" }; private JComboBox cboAkses = new JComboBox(akses); private JButton btnEdit = new JButton("Edit"); private JButton btnBatal = new JButton("Batal"); private JPanel panelEdit = new JPanel(); Container kontainer = getContentPane(); public Final_edit(Edit_user owner, String title, String username, ModalityType modal) { super(owner, title, modal); super.setSize(400, 340); // super.setVisible(true); super.setLocationRelativeTo(null); super.setDefaultCloseOperation(DISPOSE_ON_CLOSE); panelEdit.setVisible(true); panelEdit.setLayout(new GridBagLayout()); kontainer.setLayout(new FlowLayout()); GridBagConstraints c = new GridBagConstraints(); panelEdit.setBorder(BorderFactory.createTitledBorder("Edit")); cboAkses.setSelectedItem(2); isiData(username); c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(10, 10, 10, 10); c.gridx = 0; c.gridy = 0; panelEdit.add(lblID, c); c.gridx = 1; c.gridy = 0; panelEdit.add(lblNo, c); c.gridx = 0; c.gridy = 1; panelEdit.add(lblNama, c); c.gridx = 1; c.gridy = 1; panelEdit.add(txtNama, c); c.gridx = 0; c.gridy = 2; panelEdit.add(lblUser, c); txtUser.setEditable(false); c.gridx = 1; c.gridy = 2; panelEdit.add(txtUser, c); c.gridx = 0; c.gridy = 4; panelEdit.add(lblPass2, c); c.gridx = 1; c.gridy = 4; panelEdit.add(txtPass2, c); c.gridx = 0; c.gridy = 5; panelEdit.add(lblAkses, c); c.gridx = 1; c.gridy = 5; panelEdit.add(cboAkses, c); c.gridx = 0; c.gridy = 6; btnEdit.setPreferredSize(new Dimension(150, 25)); panelEdit.add(btnEdit, c); c.gridx = 1; c.gridy = 6; panelEdit.add(btnBatal, c); kontainer.add(panelEdit); btnBatal(); btnSimpan(); } public void btnBatal() { btnBatal.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub dispose(); } }); } public void btnSimpan() { btnEdit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub db.editAdmin(txtUser, txtNama, txtPass2, cboAkses, table, rowx); } }); } public void isiData(String username) { try { Class.forName(Config.DATABASE_DRIVER).newInstance(); koneksi = DriverManager.getConnection(Config.URL, Config.username, Config.password); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e) { e.printStackTrace(); } try { Statement stmt = koneksi.createStatement(); ResultSet rs = stmt .executeQuery("select * from Admin where username ='" + username + "'"); while (rs.next()) { lblNo.setText(rs.getString(1)); String akses = rs.getString(2); int index = 0; if (akses.equals("Administrator")) { index = 0; } else { index = 1; } String[] a = { "Administrator", "Kasir" }; cboAkses.setSelectedIndex(index); txtNama.setText(rs.getString(3)); txtUser.setText(rs.getString(4)); password = rs.getString(5); } koneksi.close(); rs.close(); } catch (SQLException x) { x.printStackTrace(); } } } }