fork download
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import javax.swing.border.EmptyBorder;
  5. import javax.swing.table.DefaultTableModel;
  6.  
  7. public class CustomerForm extends JPanel {
  8.  
  9. JButton btnAdd, btnUpdate, btnDelete, btnReset;
  10. JTextField txtId, txtName, txtContact;
  11. JTable customersTable;
  12. DefaultTableModel tableModel;
  13.  
  14. public CustomerForm() {
  15. super(true);
  16. btnAdd = new JButton("Add");
  17. btnUpdate = new JButton("Update");
  18. btnDelete = new JButton("Delete");
  19. btnReset = new JButton("Reset");
  20. txtId = new JTextField();
  21. txtName = new JTextField();
  22. txtContact = new JTextField();
  23. customersTable = new JTable();
  24.  
  25. JPanel fieldsPanel = new JPanel(new GridLayout(3, 2, 5,5));
  26. fieldsPanel.add(new JLabel("Customer ID:"));
  27. fieldsPanel.add(txtId);
  28. fieldsPanel.add(new JLabel("Name"));
  29. fieldsPanel.add(txtName);
  30. fieldsPanel.add(new JLabel("Contact Number:"));
  31. fieldsPanel.add(txtContact);
  32. JPanel buttonsPanel = new JPanel(new FlowLayout());
  33. buttonsPanel.add(btnAdd);
  34. buttonsPanel.add(btnUpdate);
  35. buttonsPanel.add(btnDelete);
  36. buttonsPanel.add(btnReset);
  37.  
  38. // by default update and delete should be disable since no record has been selected yet
  39. btnUpdate.setEnabled(false);
  40. btnDelete.setEnabled(false);
  41.  
  42. tableModel = new DefaultTableModel();
  43. customersTable.setModel(tableModel);
  44. tableModel.addColumn("ID");
  45. tableModel.addColumn("NAME");
  46. tableModel.addColumn("CONTACT");
  47.  
  48. // enable scroll for the table
  49. JScrollPane tablePane = new JScrollPane(customersTable);
  50.  
  51. this.setLayout(new GridLayout(3,0));
  52. this.add(fieldsPanel);
  53. this.add(buttonsPanel);
  54. this.add(tablePane);
  55.  
  56. // adds a border to the panel
  57. this.setBorder(new EmptyBorder(10, 10, 10, 10));
  58.  
  59. // adds text field entries to the table model
  60. // this change in the model in turn repaints the table
  61. btnAdd.addActionListener(new ActionListener(){
  62. public void actionPerformed(ActionEvent e){
  63. tableModel.addRow(new Object[]{txtId.getText(), txtName.getText(),txtContact.getText()});
  64. clearTexts();
  65. }
  66. });
  67.  
  68. btnUpdate.addActionListener(new ActionListener(){
  69. public void actionPerformed(ActionEvent e){
  70. tableModel.setValueAt(txtId.getText(), customersTable.getSelectedRow(), 0);
  71. tableModel.setValueAt(txtName.getText(), customersTable.getSelectedRow(), 1);
  72. tableModel.setValueAt(txtContact.getText(), customersTable.getSelectedRow(), 2);
  73. }
  74. });
  75.  
  76. // deletes the selected table row from the model
  77. btnDelete.addActionListener(new ActionListener(){
  78. public void actionPerformed(ActionEvent e){
  79. tableModel.removeRow(customersTable.getSelectedRow());
  80. clearTexts();
  81. }
  82. });
  83.  
  84. // empties the text field to enable addition of new entry
  85. // The update and delete buttons are also disabled
  86. btnReset.addActionListener(new ActionListener(){
  87. public void actionPerformed(ActionEvent e){
  88. clearTexts();
  89. btnAdd.setEnabled(true);
  90. btnUpdate.setEnabled(false);
  91. btnDelete.setEnabled(false);
  92. }
  93. });
  94.  
  95. // updates the text fields with the selected row data
  96. customersTable.addMouseListener(new java.awt.event.MouseAdapter() {
  97. public void mouseClicked(java.awt.event.MouseEvent evt) {
  98. tableRowSelected(evt);
  99. }
  100. });
  101. }
  102.  
  103. private void clearTexts(){
  104. txtId.setText("");
  105. txtName.setText("");
  106. txtContact.setText("");
  107. }
  108.  
  109. private void tableRowSelected(java.awt.event.MouseEvent evt) {
  110.  
  111. // disable add button when a row as been selected on the table
  112. // we only require row selection for update and delete
  113. btnAdd.setEnabled(false);
  114.  
  115. // re-enable update and delete button as required
  116. btnUpdate.setEnabled(true);
  117. btnDelete.setEnabled(true);
  118.  
  119. // get the selected row index
  120. int selectedRowIndex = customersTable.getSelectedRow();
  121.  
  122. // set the selected table row data into the text fields
  123. txtId.setText(tableModel.getValueAt(selectedRowIndex, 0).toString());
  124. txtName.setText(tableModel.getValueAt(selectedRowIndex, 1).toString());
  125. txtContact.setText(tableModel.getValueAt(selectedRowIndex, 2).toString());
  126.  
  127. }
  128.  
  129. public static void main(String[] args) {
  130. JFrame frame = new JFrame("Manage Customers");
  131.  
  132. public void windowClosing(WindowEvent e) {System.exit(0);}
  133. };
  134. frame.addWindowListener(l);
  135.  
  136. frame.add("Center", new CustomerForm());
  137. frame.setSize(400,400);
  138. frame.show();
  139. }
  140. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:7: error: class CustomerForm is public, should be declared in a file named CustomerForm.java
public class CustomerForm extends JPanel {
       ^
Note: Main.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
stdout
Standard output is empty