Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Modul - Pemrograman Berorientasi Objek

Modul - Pemrograman Berorientasi Objek

Published by Hendriyana, 2021-06-28 15:30:13

Description: Modul Pemrograman Berorientasi Objek menggunakan bahasa Pemrograman Java yang dilengkapi dengan script dan contoh kasus yang telah tersedia.

Keywords: Pemrograman Berorientasi Objek,PBO,OOP,Java

Search

Read the Text Version

3. Langkah ketiga adalah membuat database yang diinginkan pada aplikasi yang anda gunakan. Pada contoh kali ini adalah aplikasi data karyawan sehingga yang dibutuhkan adalah tabel login untuk admin dan tabel karyawan. Yang terdiri dari kolom id, username, password untuk tabel admin. Kolom id, nama, alamat untuk tabel karyawan. 4. Langkah keempat adalah pembuatan source code koneksi MySQL di Netbeans, nama KoneksiDB.java, berikut adalah source code dari koneksi ke database, langkah ini dapat anda lihat di https://www.youtube.com/watch?v=QuyXgi3AFsg Pada koding ini kita membutuhkan import libraries sql yang sebelumnya kita lakukan untuk memanggil kelas dan fungsi yang ada didalamnya, seperti contoh: 1. package project_crud;//menyesuaikan paket yang digunakan 2. 3. import java.sql.Connection; Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 48

4. import java.sql.DriverManager; 5. import java.sql.SQLException; 6. import javax.swing.JOptionPane; 7. 8. public class KoneksiDB { 9. public static Connection koneksi; 10. public static Connection konfigDB()throws SQLException{ 11. try{ 12. String url=\"jdbc:mysql://localhost/db_perusahaan\"; //url database 13. String user=\"root\"; //user database 14. String pass=\"\"; //password database 15. DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 16. koneksi=DriverManager.getConnection(url, user, pass); 17. //JOptionPane.showMessageDialog(null, \"Berhasil Koneksi\"); 18. }catch(Exception e){ 19. //JOptionPane.showMessageDialog(null, \"Gagal Koneksi\"); 20. System.err.println(\"koneksi gagal \"+e.getMessage()); //perintah menampilkan error pada koneksi 21. } 22. 23. return koneksi; 24. } 25. 26. public static void main(String []args) throws SQLException{ 27. Connection C = (Connection)KoneksiDB.konfigDB(); 28. } 29. 30. } 3.2 Menu Login Dengan Database Pada project kali ini aplikasi yang dibangun menggunakan menu login, dimana data yang digunakan sudah terintegrasi dengan database. Berikut langkah-langkah dari pembuatan login: Langkah ke pertama adalah pembuatan menu login, data menu login diambil dari tabel admin dimana sebelumnya sudah kita isi secara manual, yaitu username adalah admin, dan passwordnya adalah admin, langkah ini dapat anda saksikan di https://www.youtube.com/watch?v=WN2GDpzkqlo. Berikut source code login dengan nama kelas file Login.java. 1. /* 2. * To change this license header, choose License Headers in Project Properties. 3. * To change this template file, choose Tools | Templates Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 49

4. * and open the template in the editor. 5. */ 6. package project_crud; 7. 8. import java.sql.Connection; 9. import java.sql.ResultSet; 10. import java.sql.Statement; 11. import javax.swing.JOptionPane; 12. 13. /** 14. * 15. * @author asus 16. */ 17. public class Login extends javax.swing.JFrame { 18. 19. /** 20. * Creates new form Login 21. */ 22. public Login() { 23. initComponents(); 24. } 25. 26. /** 27. * This method is called from within the constructor to initialize the form. 28. * WARNING: Do NOT modify this code. The content of this method is always 29. * regenerated by the Form Editor. 30. */ 31. @SuppressWarnings(\"unchecked\") 32. // <editor-fold defaultstate=\"collapsed\" desc=\"Generated Code\"> 33. private void initComponents() { 34. 35. jLabel1 = new javax.swing.JLabel(); 36. jLabel2 = new javax.swing.JLabel(); 37. user = new javax.swing.JTextField(); 38. jButton1 = new javax.swing.JButton(); 39. pass = new javax.swing.JPasswordField(); 40. 41. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 42. 43. jLabel1.setText(\"Username:\"); 44. 45. jLabel2.setText(\"Password:\"); 46. 47. user.addActionListener(new java.awt.event.ActionListener() { 48. public void actionPerformed(java.awt.event.ActionEvent evt) { 49. userActionPerformed(evt); 50. } 51. }); 52. 53. jButton1.setText(\"Login\"); 54. jButton1.addActionListener(new java.awt.event.ActionListener() { 55. public void actionPerformed(java.awt.event.ActionEvent evt) { 56. jButton1ActionPerformed(evt); 57. } 58. }); 59. 60. pass.addActionListener(new java.awt.event.ActionListener() { 61. public void actionPerformed(java.awt.event.ActionEvent evt) { 62. passActionPerformed(evt); 63. } 64. }); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 50

65. 66. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 67. getContentPane().setLayout(layout); 68. layout.setHorizontalGroup( 69. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 70. .addGroup(layout.createSequentialGroup() 71. .addGap(34, 34, 34) 72. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 73. .addComponent(jLabel2) 74. .addComponent(jLabel1)) 75. .addGap(32, 32, 32) 76. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 77. .addComponent(user) 78. .addComponent(pass, javax.swing.GroupLayout.DEFAULT_SIZE, 198, Short.MAX_VALUE) 79. .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)) 80. .addContainerGap(84, Short.MAX_VALUE)) 81. ); 82. layout.setVerticalGroup( 83. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 84. .addGroup(layout.createSequentialGroup() 85. .addGap(32, 32, 32) 86. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 87. .addComponent(jLabel1) 88. .addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 89. .addGap(25, 25, 25) 90. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 91. .addComponent(jLabel2) 92. .addComponent(pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 93. .addGap(18, 18, 18) 94. .addComponent(jButton1) 95. .addContainerGap(162, Short.MAX_VALUE)) 96. ); 97. 98. pack(); 99. }// </editor-fold> 100. 101. private void userActionPerformed(java.awt.event.ActionEvent evt) { 102. // TODO add your handling code here: 103. } 104. 105. private void passActionPerformed(java.awt.event.ActionEvent evt) { 106. // TODO add your handling code here: 107. } 108. 109. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 110. // TODO add your handling code here: 111. try { 112. String usernm = user.getText(); 113. String passd = pass.getText(); 114. 115. //Query dan koneksi database 116. String sql = \"SELECT * FROM admin WHERE username = '\" + usernm + \"' AND password = '\" + passd + \"'\"; Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 51

117. Connection Vconn = (Connection)KoneksiDB.konfigDB(); 118. Statement s = Vconn.createStatement(); 119. ResultSet r = s.executeQuery(sql); 120. 121. if(r.next()){ 122. JOptionPane.showMessageDialog(null, \"berhasil login\"); 123. Dashboard HalUtama = new Dashboard(); 124. HalUtama.setVisible(true); 125. this.setVisible(false); 126. }else{ 127. JOptionPane.showMessageDialog(null, \"username atau password salah\"); 128. } 129. 130. } catch (Exception e) { 131. JOptionPane.showMessageDialog(this, e.getMessage()); 132. } 133. 134. } 135. 136. /** 137. * @param args the command line arguments 138. */ 139. public static void main(String args[]) { 140. /* Set the Nimbus look and feel */ 141. //<editor-fold defaultstate=\"collapsed\" desc=\" Look and feel setting code (optional) \"> 142. /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 143. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 144. */ 145. try { 146. for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 147. if (\"Nimbus\".equals(info.getName())) { 148. javax.swing.UIManager.setLookAndFeel(info.getClassName()); 149. break; 150. } 151. } 152. } catch (ClassNotFoundException ex) { 153. java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.S EVERE, null, ex); 154. } catch (InstantiationException ex) { 155. java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.S EVERE, null, ex); 156. } catch (IllegalAccessException ex) { 157. java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.S EVERE, null, ex); 158. } catch (javax.swing.UnsupportedLookAndFeelException ex) { 159. java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.S EVERE, null, ex); 160. } 161. //</editor-fold> 162. 163. /* Create and display the form */ 164. java.awt.EventQueue.invokeLater(new Runnable() { 165. public void run() { Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 52

166. new Login().setVisible(true); 167. } 168. }); 169. } 170. 171. // Variables declaration - do not modify 172. private javax.swing.JButton jButton1; 173. private javax.swing.JLabel jLabel1; 174. private javax.swing.JLabel jLabel2; 175. private javax.swing.JPasswordField pass; 176. private javax.swing.JTextField user; 177. // End of variables declaration 178. Hasil running: Baris 109 sampai dengan 134 adalah proses login, dimana source code akan membaca database dan mencari nama yang diinputkan pada menu login. Baris 116 adalah contoh code bahasa SQL yang diterapkan di pemrograman java. String sql = \"SELECT * FROM admin WHERE username = '\" + usernm + \"' AND password = '\" + passd + \"'\"; 3.3 Menu Multiple Document Interface Langkah ke enam adalah membuat desktop pane atau bisa disebut sebagai dashboard, fungsinya adalah untuk menampung semua form yang ada disebuah aplikasi. Langkah ini dapat anda lihat di video https://www.youtube.com/watch?v=WN2GDpzkqlo Nama kelas java pada contoh kali ini adalah dashboard.java, dan dibawah ini dijelaskan kenapa harus membuat sebuah dashboard menggunakan desktop pane atau multiple document interface. Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 53

Multiple Document Interface: Banyak program aplikasi yang ada saat ini merupakan aplikasi yang dapat membuka lebih dari satu jendela kerja (multiple window) atau lebih dikenal dengan MDI (Multiple Document Interface). Kebalikan dari MDI adalah SDI (Single Document Interface). Multiple document interface memang cukup populer dan digunakan di banyak program aplikasi windows. Dengan Java, Anda dapat pula membuat program aplikasi semacam ini. Java menyediakan beberapa kelas untuk maksud tersebut yaitu kelas JDesktopPane dan kelas JInternalFrame. Kelas JdesktopPane: JDesktopPane adalah kelas wadah (container class) untuk membuat MDI. Di dalam membuat MDI, Anda tetap menggunakan kelas JFrame atau JApplet sebagai jendela luar (outer window), kemudian menambahkan obyek dari kelas JDesktopPane ke content pane dari kelas JFrame atau JApplet dan selanjutnya menambahkan obyek dari kelas JInternalFrame ke obyek JDesktopPane. JDesktopPane sendiri tidak mendukung border dan selalu ditambahkan dan diletakkan di pusat dari content pane kelas JFrame atau JApplet. Kelas JDesktopPane mempunyai sebuah konstruktor. Di bawah ini adalah konstruktor kelas JDesktopPane untuk mengkonstruksi obyek desktop pane. // Mengkonstruksi obyek desktop pane JDesktopPane() Kelas JinternalFrame: Kelas JInternalFrame merupakan kelas turunan dari kelas JComponent. JInternalFrame digunakan untuk membuat jendela (window) di dalam jendela yang lain. JInternalFrame mempunyai banyak fitur (features) sebagaimana umumnya frame di perangkat lunak aplikasi window saat ini seperti dragging, closing, resizing, menjadi icon, menampilkan title dan mendukung menu bar. Anda dapat menggunakan kelas JInternalFrame dengan cara yang hampir sama dengan kelas JFrame. Misalnya, untuk menambahkan komponen di conten pane dari kelas JInternalFrame, Anda dapat menggunakan metoda add, sedangkan untuk menentukan ukuran frame dari obyek internal frame, Anda dapat menggunakan metoda setSize. Kelas JFrame bertindak sebagai komponen window level atas, sedangkan kelas JInternalFrame harus ditambahkan obyek kelas JDesktopPane yang ada di kelas JFrame atau JApplet. Anda dapat menampilkan obyek internal frame yang ada di obyek JDesktopPane menggunakan metoda setVisible. Berikut ini adalah konstruktor kelas JInternalFrame yang digunakan untuk mengkonstruksi obyek internal frame: Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 54

Berikut adalah source code dari pembuatan dashboard: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package project_crud; import javax.swing.JOptionPane; /** * * @author asus */ public class Dashboard extends javax.swing.JFrame { /** * Creates new form Dashboard Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 55

*/ public Dashboard() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings(\"unchecked\") // <editor-fold defaultstate=\"collapsed\" desc=\"Generated Code\"> private void initComponents() { layar = new javax.swing.JDesktopPane(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); jMenuItem1 = new javax.swing.JMenuItem(); jMenuItem2 = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); javax.swing.GroupLayout layarLayout = new javax.swing.GroupLayout(layar); layar.setLayout(layarLayout); layarLayout.setHorizontalGroup( layarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); layarLayout.setVerticalGroup( layarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 279, Short.MAX_VALUE) ); jMenu1.setText(\"Menu\"); jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent .VK_K, java.awt.event.InputEvent.SHIFT_MASK)); jMenuItem1.setText(\"Karyawan\"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); jMenu1.add(jMenuItem1); jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent .VK_B, java.awt.event.InputEvent.CTRL_MASK)); jMenuItem2.setText(\"Barang\"); jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem2ActionPerformed(evt); } }); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 56

jMenu1.add(jMenuItem2); jMenuBar1.add(jMenu1); jMenu2.setText(\"Logout\"); jMenu2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu2MouseClicked(evt); } }); jMenuBar1.add(jMenu2); setJMenuBar(jMenuBar1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(layar, javax.swing.GroupLayout.Alignment.TRAILING) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(layar, javax.swing.GroupLayout.Alignment.TRAILING) ); pack(); }// </editor-fold> private void jMenu2MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: int option = JOptionPane.showConfirmDialog(null, \"Anda Yakin Logout?\",\"Perhatian\",JOptionPane.YES_NO_OPTION); if (option == 0) { //The ISSUE is here Login A = new Login(); A.setVisible(true); this.setVisible(false); } else { } } private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: MenuKaryawan MK = new MenuKaryawan(); layar.add(MK); MK.setVisible(true); } private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: MenuBarang MB = new MenuBarang(); layar.add(MB); MB.setVisible(true); } /** Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 57

* @param args the command line arguments */ // Variables declaration - do not modify private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JDesktopPane layar; // End of variables declaration } Setelah melalui proses login maka algoritma akan mengarahkan ke halaman dashboard seperti dibawah ini: Disini dapat kita lihat bahwa didalam dashboard terdapat menu dan logout. Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 58

3.4 Proses Menampilkan Data Dari Database Proses ini adalah menampilkan data dari database, dimana data yang diambil sudah diinputkan terlebih dahulu melalui phpmyadmin untuk melihat data tersebut dapat tampil dihalaman interface dengan nama file MenuKaryawan.java. Pada pembuatan form kali ini menggunkan tabel sebagai media untuk menampilkan data. Berikut ditampilkan source codenya: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package project_crud; import java.sql.Connection; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; /** * * @author asus */ public class MenuKaryawan extends javax.swing.JInternalFrame { /** * Creates new form MenuKaryawan */ public MenuKaryawan() { initComponents(); tampil_table(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings(\"unchecked\") // <editor-fold defaultstate=\"collapsed\" desc=\"Generated Code\"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); tabel_karyawan = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jComboBox1 = new javax.swing.JComboBox(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 59

jButton4 = new javax.swing.JButton(); setClosable(true); setMaximizable(true); setResizable(true); setTitle(\"Menu Karyawan\"); tabel_karyawan.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { \"No.\", \"ID\", \"Nama\", \"Alamat\" } )); tabel_karyawan.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tabel_karyawanMouseClicked(evt); } }); jScrollPane1.setViewportView(tabel_karyawan); jLabel1.setText(\"Nama\"); jLabel2.setText(\"Alamat\"); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { \"Pilih Kota\", \"Jakarta\", \"Bandung\", \"Yogyakarta\", \"Cirebon\", \"Aceh\" })); jButton1.setText(\"Tambah\"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel3.setText(\"ID\"); jTextField2.setEditable(false); jButton4.setText(\"Hapus\"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 60

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2) .addComponent(jLabel1) .addComponent(jLabel3)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jTextField1) .addComponent(jComboBox1, 0, 208, Short.MAX_VALUE) .addComponent(jTextField2))) .addGroup(layout.createSequentialGroup() .addComponent(jButton1) .addGap(18, 18, 18) .addComponent(jButton2) .addGap(18, 18, 18) .addComponent(jButton3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton4))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 385, javax.swing.GroupLayout.PREFERRED_SIZE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 49, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addGap(26, 26, 26) Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 61

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton3) .addComponent(jButton2) .addComponent(jButton1) .addComponent(jButton4)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// </editor-fold> } private void tabel_karyawanMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: int baris = tabel_karyawan.rowAtPoint(evt.getPoint()); //int kolom = tabel_karyawan.columnAtPoint(evt.getPoint()); String id =tabel_karyawan.getValueAt(baris, 1).toString(); jTextField2.setText(id); String nm =tabel_karyawan.getValueAt(baris, 2).toString(); jTextField1.setText(nm); String almt=tabel_karyawan.getValueAt(baris, 3).toString(); jComboBox1.setSelectedItem(almt); } private void tampil_table() { //membuat objek model pada tabel DefaultTableModel tb = new DefaultTableModel(); tb.addColumn(\"No\"); tb.addColumn(\"ID\"); tb.addColumn(\"Nama\"); tb.addColumn(\"Alamat\"); try { int counter = 1; // 1. Query String query = \"SELECT * FROM karyawan\"; // 2. Fungsi koneksi java.sql.Connection vconn = (Connection)KoneksiDB.konfigDB(); // 3. Kirim Paramter fungsi Java ke SQL java.sql.Statement s = vconn.createStatement(); // 4. Eksekusi Query java.sql.ResultSet r = s.executeQuery(query); // 5. Looping while (r.next()) { tb.addRow(new Object[]{ Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 62

counter++,r.getString(1),r.getString(2),r.getString(3) }); } tabel_karyawan.setModel(tb); } catch (Exception e) { } } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTable tabel_karyawan; // End of variables declaration } Berikut hasil dari coding diatas: Dari proses tersebut bahwa coding yang dibentuk adalah menyimpan form karyawan ke dalam desktop pane atau menu dashboard sehingga tabel yang berfungsi untuk menampilkan data bisa dijalankan. Anda juga dapat melihat video tutorial ini pada link youtube berikut ini: https://www.youtube.com/watch?v=FKdWPwg3SmI Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 63

3.5 Proses Input Data Ke Database Proses ini adalah proses menginputkan data dari user interface kemudian data akan terimpan pada database yang sudah dibuat. Pada form MenuKaryawan.java Data akan di tulis pada textfield yang sudah tersedia, kemudian user akan mengklik tombol tambah sehingga data akan tersimpan ke dalam database. Berikut gambar form dari proses input data: Input ke database Pada tombol tambah terdapat event yang berisi koding untuk menginputkan data, dan akan ditampilkan secara automatis di tabel UI. Untuk proses menampilkannya menggunakan fungsi yang diberi nama tampil_tabel, artinya setiap kegiatan yang ada pada tombol UI pasti selalu melakukan refresh data pada tabel. Berikut koding dari tombol tambah: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String Nm = jTextField1.getText(); String kota = (String) jComboBox1.getSelectedItem(); if(Nm.equals(\"\")){ JOptionPane.showMessageDialog(null, \"Isi Nama Terlebih Dahulu\"); }else if(kota.equals(\"Pilih Kota\")){ JOptionPane.showMessageDialog(null, \"Pilih Alamat Terlebih Dahulu\"); }else{ try { String Q = \"INSERT INTO karyawan (nama,alamat) VALUES ('\"+Nm+\"','\"+kota+\"')\"; java.sql.Connection Vconn = (Connection)KoneksiDB.konfigDB(); //memanggil fungsi koneksi dikelas lainnya java.sql.PreparedStatement s = Vconn.prepareStatement(Q); //mengirimkan parameter ke fungsi java sql s.execute(); //execute sql JOptionPane.showMessageDialog(null, \"Tambah Data Berhasil\"); } catch (Exception e) { JOptionPane.showMessageDialog(null, \"Tambah Data Gagal\"); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 64

JOptionPane.showMessageDialog(this, e.getMessage()); } tampil_table(); bersih(); } } Dan berikut ini adalah koding dari fungsi tampil_tabel: private void tampil_table() { //membuat objek model pada tabel DefaultTableModel tb = new DefaultTableModel(); tb.addColumn(\"No\"); tb.addColumn(\"ID\"); tb.addColumn(\"Nama\"); tb.addColumn(\"Alamat\"); try { int counter = 1; // 1. Query String query = \"SELECT * FROM karyawan\"; // 2. Fungsi koneksi java.sql.Connection vconn = (Connection)KoneksiDB.konfigDB(); // 3. Kirim Paramter fungsi Java ke SQL java.sql.Statement s = vconn.createStatement(); // 4. Eksekusi Query java.sql.ResultSet r = s.executeQuery(query); // 5. Looping while (r.next()) { tb.addRow(new Object[]{ counter++,r.getString(1),r.getString(2),r.getString(3) }); } tabel_karyawan.setModel(tb); } catch (Exception e) { } } Koding dari fungsi tampil_tabel ini sebtulnya sama dengan koding menampilkan data, dimana koding akan me refresh ketika ada aksi pada UI. Kemudian anda juga bisa menyaksikan video tutorial terkait koding menginputkan data dari UI ke Database melalui link berikut https://www.youtube.com/watch?v=FKdWPwg3SmI Kemudian di tampilan tersebut ada tombol bersih yang berfungsi membersikan text yang ada di textfield. Kodingnya sangat sederhanya hanya mengeset textfiled atau combobox menjadi kosong. Kodingnya seperti dibawah ini: private void bersih(){ jTextField2.setText(\"\"); jTextField1.setText(\"\"); jComboBox1.setSelectedIndex(0); } Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 65

3.6 Proses Update Data Ke Database Proses selanjutnya adalah update data dari UI ke Database. Pada kasus project kali ini kita tidak membutuhkan lagi form baru, kita akan memanfaatkan form yang sudah dibentuk dengan nama MenuKaryawan.java. Proses update data daiatas adalah user mengklik data yang ada ditabel, kemudian data akan berpindah ke textfield disebelah kiri, kemudian di textfield terbut user dapat mengubah data yang diinginkan, lalu klik tombol ubah untuk mengupdate data ke database. Proses ini dapat anda lihat di video tutorial berikut ini https://www.youtube.com/watch?v=DvQXtE8fNRY&t=1303s Di bawah ini menunjukan potongan koding dari proses update yang berada di event tombol ubah: private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String idi = jTextField2.getText(); String nm = jTextField1.getText(); String almat = (String) jComboBox1.getSelectedItem(); if(nm.equals(\"\")){ JOptionPane.showMessageDialog(null, \"Isi Nama Terlebih Dahulu\"); }else if(almat.equals(\"Pilih Kota\")){ JOptionPane.showMessageDialog(null, \"Pilih Alamat Terlebih Dahulu\"); }else{ try { String Vsql =\"UPDATE karyawan SET id = '\"+idi+\"', nama = '\"+nm+\"', alamat = '\"+almat+\"' WHERE id = '\"+idi+\"'\"; Connection Vconn = (Connection)KoneksiDB.konfigDB(); //memanggil fungsi koneksi dikelas lainnya Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 66

java.sql.PreparedStatement pst = Vconn.prepareStatement(Vsql); //mengirimkan parameter ke fungsi java sql pst.execute(); //execute sql JOptionPane.showMessageDialog(null, \"Ubah Data Berhasil\"); tampil_table(); bersih(); } catch (Exception e) { JOptionPane.showMessageDialog(null, \"Ubah Data Gagal\"); JOptionPane.showMessageDialog(this, e.getMessage()); } } } 3.7 Proses Delete Data Ke Database Proses terakhir dalam aplikasi CRUD pada project ini adalah menghapus data dari UI ke Database. Proses ini tidak perlu membuat form atau kelas java baru pada kasus project ini. Hanya menambahkan tombol hapus pada form yang sudah ada atau kelas MenuKaryawan.java. Pada gambar form diatas menunjukan tombol hapus, cara kerjanya mirip seperti update yaitu user terlebih dahulu memilih atau mengklik data yang ada di tabel UI, kemudian data akan pindah ke textfield di sebelah kanan, lalu kita kelik tombol hapus untuk menghilangkan data yang ada ditabase. Video tutorial hapus data ini dapat anda lihat di https://www.youtube.com/watch?v=DvQXtE8fNRY&t=1303s Berikut potongan koding dari proses delete: private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String id = jTextField2.getText(); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 67

String nama = jTextField1.getText(); String alamat = (String) jComboBox1.getSelectedItem(); if(nama.equals(\"\")){ JOptionPane.showMessageDialog(null, \"Isi Nama Terlebih Dahulu\"); }else if(alamat.equals(\"Pilih Kota\")){ JOptionPane.showMessageDialog(null, \"Pilih Alamat Terlebih Dahulu\"); }else{ try { // 1. Query String query = \"DELETE FROM karyawan WHERE id = '\"+id+\"'\"; // 2. Koneksi Connection Vconn = (Connection)KoneksiDB.konfigDB(); //memanggil fungsi koneksi dikelas lainnya // 3. Statement java.sql.PreparedStatement stm = Vconn.prepareStatement(query); // 4. Eksekusi Query stm.execute(); // 5. Menampilkan Notif Berhasil JOptionPane.showMessageDialog(null, \"Hapus Data Berhasil\"); tampil_table(); bersih(); } catch (Exception e){ JOptionPane.showMessageDialog(null, \"Hapus Data Gagal\"); JOptionPane.showMessageDialog(null, e.getMessage()); } } } 4. Koding Lengkap Project Berikut ini adalah sub bab yang menampilkan koding secara utuh pada kelas MenuKaryawan.java: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package project_crud; import java.sql.Connection; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; /** * * @author asus */ public class MenuKaryawan extends javax.swing.JInternalFrame { /** * Creates new form MenuKaryawan */ Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 68

public MenuKaryawan() { initComponents(); tampil_table(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings(\"unchecked\") // <editor-fold defaultstate=\"collapsed\" desc=\"Generated Code\"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); tabel_karyawan = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jComboBox1 = new javax.swing.JComboBox(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); jButton4 = new javax.swing.JButton(); setClosable(true); setMaximizable(true); setResizable(true); setTitle(\"Menu Karyawan\"); tabel_karyawan.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { \"No.\", \"ID\", \"Nama\", \"Alamat\" } )); tabel_karyawan.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tabel_karyawanMouseClicked(evt); } }); jScrollPane1.setViewportView(tabel_karyawan); jLabel1.setText(\"Nama\"); jLabel2.setText(\"Alamat\"); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { \"Pilih Kota\", \"Jakarta\", \"Bandung\", \"Yogyakarta\", \"Cirebon\", \"Aceh\" })); jButton1.setText(\"Tambah\"); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 69

jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jButton2.setText(\"Bersih\"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jButton3.setText(\"Ubah\"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jLabel3.setText(\"ID\"); jTextField2.setEditable(false); jButton4.setText(\"Hapus\"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2) .addComponent(jLabel1) .addComponent(jLabel3)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jTextField1) .addComponent(jComboBox1, 0, 208, Short.MAX_VALUE) .addComponent(jTextField2))) .addGroup(layout.createSequentialGroup() .addComponent(jButton1) .addGap(18, 18, 18) .addComponent(jButton2) .addGap(18, 18, 18) Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 70

.addComponent(jButton3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton4))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 385, javax.swing.GroupLayout.PREFERRED_SIZE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 49, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addGap(26, 26, 26) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton3) .addComponent(jButton2) .addComponent(jButton1) .addComponent(jButton4)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String Nm = jTextField1.getText(); String kota = (String) jComboBox1.getSelectedItem(); if(Nm.equals(\"\")){ JOptionPane.showMessageDialog(null, \"Isi Nama Terlebih Dahulu\"); }else if(kota.equals(\"Pilih Kota\")){ JOptionPane.showMessageDialog(null, \"Pilih Alamat Terlebih Dahulu\"); }else{ try { Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 71

String Q = \"INSERT INTO karyawan (nama,alamat) VALUES ('\"+Nm+\"','\"+kota+\"')\"; java.sql.Connection Vconn = (Connection)KoneksiDB.konfigDB(); //memanggil fungsi koneksi dikelas lainnya java.sql.PreparedStatement s = Vconn.prepareStatement(Q); //mengirimkan parameter ke fungsi java sql s.execute(); //execute sql JOptionPane.showMessageDialog(null, \"Tambah Data Berhasil\"); } catch (Exception e) { JOptionPane.showMessageDialog(null, \"Tambah Data Gagal\"); JOptionPane.showMessageDialog(this, e.getMessage()); } tampil_table(); bersih(); } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: bersih(); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String idi = jTextField2.getText(); String nm = jTextField1.getText(); String almat = (String) jComboBox1.getSelectedItem(); if(nm.equals(\"\")){ JOptionPane.showMessageDialog(null, \"Isi Nama Terlebih Dahulu\"); }else if(almat.equals(\"Pilih Kota\")){ JOptionPane.showMessageDialog(null, \"Pilih Alamat Terlebih Dahulu\"); }else{ try { String Vsql =\"UPDATE karyawan SET id = '\"+idi+\"', nama = '\"+nm+\"', alamat = '\"+almat+\"' WHERE id = '\"+idi+\"'\"; Connection Vconn = (Connection)KoneksiDB.konfigDB(); //memanggil fungsi koneksi dikelas lainnya java.sql.PreparedStatement pst = Vconn.prepareStatement(Vsql); //mengirimkan parameter ke fungsi java sql pst.execute(); //execute sql JOptionPane.showMessageDialog(null, \"Ubah Data Berhasil\"); tampil_table(); bersih(); } catch (Exception e) { JOptionPane.showMessageDialog(null, \"Ubah Data Gagal\"); JOptionPane.showMessageDialog(this, e.getMessage()); } } } private void tabel_karyawanMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: int baris = tabel_karyawan.rowAtPoint(evt.getPoint()); //int kolom = tabel_karyawan.columnAtPoint(evt.getPoint()); String id =tabel_karyawan.getValueAt(baris, 1).toString(); jTextField2.setText(id); Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 72

String nm =tabel_karyawan.getValueAt(baris, 2).toString(); jTextField1.setText(nm); String almt=tabel_karyawan.getValueAt(baris, 3).toString(); jComboBox1.setSelectedItem(almt); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String id = jTextField2.getText(); String nama = jTextField1.getText(); String alamat = (String) jComboBox1.getSelectedItem(); if(nama.equals(\"\")){ JOptionPane.showMessageDialog(null, \"Isi Nama Terlebih Dahulu\"); }else if(alamat.equals(\"Pilih Kota\")){ JOptionPane.showMessageDialog(null, \"Pilih Alamat Terlebih Dahulu\"); }else{ try { // 1. Query String query = \"DELETE FROM karyawan WHERE id = '\"+id+\"'\"; // 2. Koneksi Connection Vconn = (Connection)KoneksiDB.konfigDB(); //memanggil fungsi koneksi dikelas lainnya // 3. Statement java.sql.PreparedStatement stm = Vconn.prepareStatement(query); // 4. Eksekusi Query stm.execute(); // 5. Menampilkan Notif Berhasil JOptionPane.showMessageDialog(null, \"Hapus Data Berhasil\"); tampil_table(); bersih(); } catch (Exception e){ JOptionPane.showMessageDialog(null, \"Hapus Data Gagal\"); JOptionPane.showMessageDialog(null, e.getMessage()); } } } private void tampil_table() { //membuat objek model pada tabel DefaultTableModel tb = new DefaultTableModel(); tb.addColumn(\"No\"); tb.addColumn(\"ID\"); tb.addColumn(\"Nama\"); tb.addColumn(\"Alamat\"); try { int counter = 1; Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 73

// 1. Query String query = \"SELECT * FROM karyawan\"; // 2. Fungsi koneksi java.sql.Connection vconn = (Connection)KoneksiDB.konfigDB(); // 3. Kirim Paramter fungsi Java ke SQL java.sql.Statement s = vconn.createStatement(); // 4. Eksekusi Query java.sql.ResultSet r = s.executeQuery(query); // 5. Looping while (r.next()) { tb.addRow(new Object[]{ counter++,r.getString(1),r.getString(2),r.getString(3) }); } tabel_karyawan.setModel(tb); } catch (Exception e) { } } private void bersih(){ jTextField2.setText(\"\"); jTextField1.setText(\"\"); jComboBox1.setSelectedIndex(0); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTable tabel_karyawan; // End of variables declaration } Pemrograman Berorientasi Objek | Graphical User Interface (GUI) 74