import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;
import javax.swing.border.EmptyBorder ;
import javax.swing.table.DefaultTableModel ;
public class CustomerForm
extends JPanel {
JButton btnAdd, btnUpdate, btnDelete, btnReset
;
public CustomerForm( ) {
super ( true ) ;
customersTable
= new JTable ( ) ;
fieldsPanel.
add ( new JLabel ( "Customer ID:" ) ) ; fieldsPanel.add ( txtId) ;
fieldsPanel.
add ( new JLabel ( "Name" ) ) ; fieldsPanel.add ( txtName) ;
fieldsPanel.
add ( new JLabel ( "Contact Number:" ) ) ; fieldsPanel.add ( txtContact) ;
buttonsPanel.add ( btnAdd) ;
buttonsPanel.add ( btnUpdate) ;
buttonsPanel.add ( btnDelete) ;
buttonsPanel.add ( btnReset) ;
// by default update and delete should be disable since no record has been selected yet
btnUpdate.setEnabled ( false ) ;
btnDelete.setEnabled ( false ) ;
customersTable.setModel ( tableModel) ;
tableModel.addColumn ( "ID" ) ;
tableModel.addColumn ( "NAME" ) ;
tableModel.addColumn ( "CONTACT" ) ;
// enable scroll for the table
this .add ( fieldsPanel) ;
this .add ( buttonsPanel) ;
this .add ( tablePane) ;
// adds a border to the panel
// adds text field entries to the table model
// this change in the model in turn repaints the table
tableModel.
addRow ( new Object [ ] { txtId.
getText ( ) , txtName.
getText ( ) ,txtContact.
getText ( ) } ) ; clearTexts( ) ;
}
} ) ;
tableModel.setValueAt ( txtId.getText ( ) , customersTable.getSelectedRow ( ) , 0 ) ;
tableModel.setValueAt ( txtName.getText ( ) , customersTable.getSelectedRow ( ) , 1 ) ;
tableModel.setValueAt ( txtContact.getText ( ) , customersTable.getSelectedRow ( ) , 2 ) ;
}
} ) ;
// deletes the selected table row from the model
tableModel.removeRow ( customersTable.getSelectedRow ( ) ) ;
clearTexts( ) ;
}
} ) ;
// empties the text field to enable addition of new entry
// The update and delete buttons are also disabled
clearTexts( ) ;
btnAdd.setEnabled ( true ) ;
btnUpdate.setEnabled ( false ) ;
btnDelete.setEnabled ( false ) ;
}
} ) ;
// updates the text fields with the selected row data
customersTable.
addMouseListener ( new java.
awt .
event .
MouseAdapter ( ) { public void mouseClicked
( java.
awt .
event .
MouseEvent evt
) { tableRowSelected( evt) ;
}
} ) ;
}
private void clearTexts( ) {
txtId.setText ( "" ) ;
txtName.setText ( "" ) ;
txtContact.setText ( "" ) ;
}
private void tableRowSelected
( java.
awt .
event .
MouseEvent evt
) {
// disable add button when a row as been selected on the table
// we only require row selection for update and delete
btnAdd.setEnabled ( false ) ;
// re-enable update and delete button as required
btnUpdate.setEnabled ( true ) ;
btnDelete.setEnabled ( true ) ;
// get the selected row index
int selectedRowIndex = customersTable.getSelectedRow ( ) ;
// set the selected table row data into the text fields
txtId.setText ( tableModel.getValueAt ( selectedRowIndex, 0 ) .toString ( ) ) ;
txtName.setText ( tableModel.getValueAt ( selectedRowIndex, 1 ) .toString ( ) ) ;
txtContact.setText ( tableModel.getValueAt ( selectedRowIndex, 2 ) .toString ( ) ) ;
}
public static void main
( String [ ] args
) {
} ;
frame.addWindowListener ( l) ;
frame.add ( "Center" , new CustomerForm( ) ) ;
frame.setSize ( 400 ,400 ) ;
frame.show ( ) ;
}
}
aW1wb3J0IGphdmEuYXd0Lio7CmltcG9ydCBqYXZhLmF3dC5ldmVudC4qOwppbXBvcnQgamF2YXguc3dpbmcuKjsKaW1wb3J0IGphdmF4LnN3aW5nLmJvcmRlci5FbXB0eUJvcmRlcjsKaW1wb3J0IGphdmF4LnN3aW5nLnRhYmxlLkRlZmF1bHRUYWJsZU1vZGVsOwoKcHVibGljIGNsYXNzIEN1c3RvbWVyRm9ybSBleHRlbmRzIEpQYW5lbCB7CgoJSkJ1dHRvbiBidG5BZGQsIGJ0blVwZGF0ZSwgYnRuRGVsZXRlLCBidG5SZXNldDsKCUpUZXh0RmllbGQgdHh0SWQsIHR4dE5hbWUsIHR4dENvbnRhY3Q7CglKVGFibGUgY3VzdG9tZXJzVGFibGU7CglEZWZhdWx0VGFibGVNb2RlbCB0YWJsZU1vZGVsOwoKCXB1YmxpYyBDdXN0b21lckZvcm0oKSB7CgkJc3VwZXIodHJ1ZSk7IAoJCWJ0bkFkZCA9IG5ldyBKQnV0dG9uKCJBZGQiKTsKCQlidG5VcGRhdGUgPSBuZXcgSkJ1dHRvbigiVXBkYXRlIik7CgkJYnRuRGVsZXRlID0gbmV3IEpCdXR0b24oIkRlbGV0ZSIpOwoJCWJ0blJlc2V0ID0gbmV3IEpCdXR0b24oIlJlc2V0Iik7CgkJdHh0SWQgPSBuZXcgSlRleHRGaWVsZCgpOwoJCXR4dE5hbWUgPSBuZXcgSlRleHRGaWVsZCgpOwoJCXR4dENvbnRhY3QgPSBuZXcgSlRleHRGaWVsZCgpOwoJCWN1c3RvbWVyc1RhYmxlID0gbmV3IEpUYWJsZSgpOwoJCQoJCUpQYW5lbCBmaWVsZHNQYW5lbCA9IG5ldyBKUGFuZWwobmV3IEdyaWRMYXlvdXQoMywgMiwgNSw1KSk7CgkJZmllbGRzUGFuZWwuYWRkKG5ldyBKTGFiZWwoIkN1c3RvbWVyIElEOiIpKTsKCQlmaWVsZHNQYW5lbC5hZGQodHh0SWQpOwoJCWZpZWxkc1BhbmVsLmFkZChuZXcgSkxhYmVsKCJOYW1lIikpOwoJCWZpZWxkc1BhbmVsLmFkZCh0eHROYW1lKTsKCQlmaWVsZHNQYW5lbC5hZGQobmV3IEpMYWJlbCgiQ29udGFjdCBOdW1iZXI6IikpOwoJCWZpZWxkc1BhbmVsLmFkZCh0eHRDb250YWN0KTsKCQlKUGFuZWwgYnV0dG9uc1BhbmVsID0gbmV3IEpQYW5lbChuZXcgRmxvd0xheW91dCgpKTsKCQlidXR0b25zUGFuZWwuYWRkKGJ0bkFkZCk7CgkJYnV0dG9uc1BhbmVsLmFkZChidG5VcGRhdGUpOwoJCWJ1dHRvbnNQYW5lbC5hZGQoYnRuRGVsZXRlKTsKCQlidXR0b25zUGFuZWwuYWRkKGJ0blJlc2V0KTsKCQkKCQkvLyBieSBkZWZhdWx0IHVwZGF0ZSBhbmQgZGVsZXRlIHNob3VsZCBiZSBkaXNhYmxlIHNpbmNlIG5vIHJlY29yZCBoYXMgYmVlbiBzZWxlY3RlZCB5ZXQKCQlidG5VcGRhdGUuc2V0RW5hYmxlZChmYWxzZSk7CgkJYnRuRGVsZXRlLnNldEVuYWJsZWQoZmFsc2UpOwoJCQoJCXRhYmxlTW9kZWwgPSBuZXcgRGVmYXVsdFRhYmxlTW9kZWwoKTsKCQljdXN0b21lcnNUYWJsZS5zZXRNb2RlbCh0YWJsZU1vZGVsKTsKCQl0YWJsZU1vZGVsLmFkZENvbHVtbigiSUQiKTsKCQl0YWJsZU1vZGVsLmFkZENvbHVtbigiTkFNRSIpOwoJCXRhYmxlTW9kZWwuYWRkQ29sdW1uKCJDT05UQUNUIik7CgkJCgkJLy8gZW5hYmxlIHNjcm9sbCBmb3IgdGhlIHRhYmxlCgkJSlNjcm9sbFBhbmUgdGFibGVQYW5lID0gbmV3IEpTY3JvbGxQYW5lKGN1c3RvbWVyc1RhYmxlKTsKCQkKCQl0aGlzLnNldExheW91dChuZXcgR3JpZExheW91dCgzLDApKTsKCQl0aGlzLmFkZChmaWVsZHNQYW5lbCk7CgkJdGhpcy5hZGQoYnV0dG9uc1BhbmVsKTsKCQl0aGlzLmFkZCh0YWJsZVBhbmUpOwoJCQoJCS8vIGFkZHMgYSBib3JkZXIgdG8gdGhlIHBhbmVsCgkJdGhpcy5zZXRCb3JkZXIobmV3IEVtcHR5Qm9yZGVyKDEwLCAxMCwgMTAsIDEwKSk7CgkJCgkJLy8gYWRkcyB0ZXh0IGZpZWxkICBlbnRyaWVzIHRvIHRoZSB0YWJsZSBtb2RlbAoJCS8vIHRoaXMgY2hhbmdlIGluIHRoZSBtb2RlbCBpbiB0dXJuIHJlcGFpbnRzIHRoZSB0YWJsZQoJCWJ0bkFkZC5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKXsgIAoJCQlwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSl7ICAKICAgICAgICAgIHRhYmxlTW9kZWwuYWRkUm93KG5ldyBPYmplY3RbXXt0eHRJZC5nZXRUZXh0KCksIHR4dE5hbWUuZ2V0VGV4dCgpLHR4dENvbnRhY3QuZ2V0VGV4dCgpfSk7CgkJCQkJY2xlYXJUZXh0cygpOwkJCQkJCQogICAgICAgIH0gIAogICAgfSk7CgkJCgkJYnRuVXBkYXRlLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpeyAgCgkJCXB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKXsKCQkJCQl0YWJsZU1vZGVsLnNldFZhbHVlQXQodHh0SWQuZ2V0VGV4dCgpLCBjdXN0b21lcnNUYWJsZS5nZXRTZWxlY3RlZFJvdygpLCAwKTsKCQkJCQl0YWJsZU1vZGVsLnNldFZhbHVlQXQodHh0TmFtZS5nZXRUZXh0KCksIGN1c3RvbWVyc1RhYmxlLmdldFNlbGVjdGVkUm93KCksIDEpOwoJCQkJCXRhYmxlTW9kZWwuc2V0VmFsdWVBdCh0eHRDb250YWN0LmdldFRleHQoKSwgY3VzdG9tZXJzVGFibGUuZ2V0U2VsZWN0ZWRSb3coKSwgMik7CiAgICAgICAgfSAgCiAgICB9KTsKCQkKCQkvLyBkZWxldGVzIHRoZSBzZWxlY3RlZCB0YWJsZSByb3cgZnJvbSB0aGUgbW9kZWwKCQlidG5EZWxldGUuYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCl7ICAKCQkJcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpeyAgCiAgICAgICAgdGFibGVNb2RlbC5yZW1vdmVSb3coY3VzdG9tZXJzVGFibGUuZ2V0U2VsZWN0ZWRSb3coKSk7CgkJCQljbGVhclRleHRzKCk7CQkJCQkJCiAgICAgICAgfSAgCiAgICB9KTsKCQkKCQkvLyBlbXB0aWVzIHRoZSB0ZXh0IGZpZWxkIHRvIGVuYWJsZSBhZGRpdGlvbiBvZiBuZXcgZW50cnkKCQkvLyBUaGUgdXBkYXRlIGFuZCBkZWxldGUgYnV0dG9ucyBhcmUgYWxzbyBkaXNhYmxlZAoJCWJ0blJlc2V0LmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpeyAgCgkJCXB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKXsgIAogICAgICAgIGNsZWFyVGV4dHMoKTsKCQkJCWJ0bkFkZC5zZXRFbmFibGVkKHRydWUpOwoJCQkJYnRuVXBkYXRlLnNldEVuYWJsZWQoZmFsc2UpOwoJCQkJYnRuRGVsZXRlLnNldEVuYWJsZWQoZmFsc2UpOwogICAgICAgIH0gIAogICAgfSk7CgkJCgkJLy8gdXBkYXRlcyB0aGUgdGV4dCBmaWVsZHMgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEKCQljdXN0b21lcnNUYWJsZS5hZGRNb3VzZUxpc3RlbmVyKG5ldyBqYXZhLmF3dC5ldmVudC5Nb3VzZUFkYXB0ZXIoKSB7CiAgICAgICAgICAgIHB1YmxpYyB2b2lkIG1vdXNlQ2xpY2tlZChqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50IGV2dCkgewogICAgICAgICAgICAgICAgdGFibGVSb3dTZWxlY3RlZChldnQpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7Cgl9CgkKCXByaXZhdGUgdm9pZCBjbGVhclRleHRzKCl7CgkJdHh0SWQuc2V0VGV4dCgiIik7CgkJdHh0TmFtZS5zZXRUZXh0KCIiKTsKCQl0eHRDb250YWN0LnNldFRleHQoIiIpOwoJfQoJCglwcml2YXRlIHZvaWQgdGFibGVSb3dTZWxlY3RlZChqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50IGV2dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgCgkJCS8vIGRpc2FibGUgYWRkIGJ1dHRvbiB3aGVuIGEgcm93IGFzIGJlZW4gc2VsZWN0ZWQgb24gdGhlIHRhYmxlCgkJCS8vIHdlIG9ubHkgcmVxdWlyZSByb3cgc2VsZWN0aW9uIGZvciB1cGRhdGUgYW5kIGRlbGV0ZQoJCQlidG5BZGQuc2V0RW5hYmxlZChmYWxzZSk7CgkJCQoJCQkvLyByZS1lbmFibGUgdXBkYXRlIGFuZCBkZWxldGUgYnV0dG9uIGFzIHJlcXVpcmVkCgkJCWJ0blVwZGF0ZS5zZXRFbmFibGVkKHRydWUpOwoJCQlidG5EZWxldGUuc2V0RW5hYmxlZCh0cnVlKTsKCQkJCiAgICAgIC8vIGdldCB0aGUgc2VsZWN0ZWQgcm93IGluZGV4CiAgICAgIGludCBzZWxlY3RlZFJvd0luZGV4ID0gY3VzdG9tZXJzVGFibGUuZ2V0U2VsZWN0ZWRSb3coKTsKICAgICAgIAogICAgICAvLyBzZXQgdGhlIHNlbGVjdGVkIHRhYmxlIHJvdyBkYXRhIGludG8gdGhlIHRleHQgZmllbGRzCiAgICAgIHR4dElkLnNldFRleHQodGFibGVNb2RlbC5nZXRWYWx1ZUF0KHNlbGVjdGVkUm93SW5kZXgsIDApLnRvU3RyaW5nKCkpOwogICAgICB0eHROYW1lLnNldFRleHQodGFibGVNb2RlbC5nZXRWYWx1ZUF0KHNlbGVjdGVkUm93SW5kZXgsIDEpLnRvU3RyaW5nKCkpOwogICAgICB0eHRDb250YWN0LnNldFRleHQodGFibGVNb2RlbC5nZXRWYWx1ZUF0KHNlbGVjdGVkUm93SW5kZXgsIDIpLnRvU3RyaW5nKCkpOwogICAgICAgIAogICAgfSAgICAgICAKICAgIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCQlKRnJhbWUgZnJhbWUgPSBuZXcgSkZyYW1lKCJNYW5hZ2UgQ3VzdG9tZXJzIik7CgoJCQlXaW5kb3dMaXN0ZW5lciBsID0gbmV3IFdpbmRvd0FkYXB0ZXIoKSB7CgkJCQkJcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7U3lzdGVtLmV4aXQoMCk7fQoJCQl9OwoJCQlmcmFtZS5hZGRXaW5kb3dMaXN0ZW5lcihsKTsKCgkJCWZyYW1lLmFkZCgiQ2VudGVyIiwgbmV3IEN1c3RvbWVyRm9ybSgpKTsKCQkJZnJhbWUuc2V0U2l6ZSg0MDAsNDAwKTsKCQkJZnJhbWUuc2hvdygpOwogICAgfQp9
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