Setelah API dan server jadi sekarang saatnya kta membuat project untuk klientnya…, project ini agak lama karena kita harus buat desaign viewnya atau GUI-nya atau Visualnya.. Artikel ini meneruskan artikel sebelumnya..
dibawah ini screenshot projectnya :
dibawah ini screenshot projectnya :

setelah itu buat tablemodel dulu dengan nama TableModelPerson.java (class ini yang mengatur table yang ada di visualnya client)
package stta.bahrie.client.model;
import api.bahrie.entity.Person;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
* @author bahrie
*/
public class TableModelPerson extends AbstractTableModel {
List list = new ArrayList();
public TableModelPerson() {
}
public Person get(int row){
return list.get(row);
}
public int getRowCount() {
return list.size();
}
public int getColumnCount() {
return 4;
}
public void insert(Person person) {
list.add(person);
fireTableDataChanged();
}
public void update(int row, Person person) {
list.set(row, person);
fireTableDataChanged();
}
public void delete(int row) {
list.remove(row);
fireTableDataChanged();
}
public void setData(List list) {
this.list = list;
fireTableDataChanged();
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0: return list.get(rowIndex).getId();
case 1:return list.get(rowIndex).getNama_depan();
case 2: return list.get(rowIndex).getNama_belakang();
case 3:return list.get(rowIndex).getTanggal_lahir();
default: return null;
}
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:return "id";
case 1:return "Nama Depan";
case 2: return "Nama Belakang";
case 3: return "Tanggal Lahir";
default: return null;
}
}
}
setelah itu buat desaign visualnya atau dlam istilah java adalah viewnya..
dibawah ini adlah screenshot desaing yg saya buat.
dibawah ini adlah screenshot desaing yg saya buat.


dan dibawah ini adalah sourcecode yang ada dibelakang view tersebut
package stta.bahrie.client.form;
import api.bahrie.entity.Person;
import api.bahrie.service.PersonSevice;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import stta.bahrie.client.model.TableModelPerson;
/**
*
* @author bahrie
*/
public class FormClient extends javax.swing.JFrame {
private TableModelPerson tableModelPerson = new TableModelPerson();
private PersonSevice personSevice;
/** Creates new form FormClient */
public FormClient(PersonSevice personSevice) {
this.personSevice = personSevice;
try{
tableModelPerson.setData(this.personSevice.getPerson());
}catch(RemoteException exception){
exception.printStackTrace();
}
initComponents();
TablePerson.setModel(tableModelPerson);
TablePerson.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int row = TablePerson.getSelectedRow();
if (row != -1) {
Person person = tableModelPerson.get(row);
textId.setValue(person.getId());
textNdepan.setText(person.getNama_depan());
textNbelakang.setText(person.getNama_belakang());
textTanggalLahir.setValue(person.getTanggal_lahir());
}
}
});
}
void kosongkanText(){
textId.setText("");
textNdepan.setText("");
textNbelakang.setText("");
textTanggalLahir.setText("");
}
private void refreshButtomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtomActionPerformed
// TODO add your handling code here:
try {
List list = personSevice.getPerson();
tableModelPerson.setData(list);
this.kosongkanText();
} catch (RemoteException exception) {
exception.printStackTrace();
}
}//GEN-LAST:event_refreshButtomActionPerformed
private void insertButtomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_insertButtomActionPerformed
// TODO add your handling code here:
try {
Person person = new Person();
person.setNama_depan(textNdepan.getText());
person.setNama_belakang(textNbelakang.getText());
person.setTanggal_lahir((Date) textTanggalLahir.getValue());
Person person1=personSevice.insertPerson(person);
tableModelPerson.insert(person1);
this.kosongkanText();
} catch (RemoteException exception) {
exception.printStackTrace();
}
}//GEN-LAST:event_insertButtomActionPerformed
private void updateButtomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateButtomActionPerformed
// TODO add your handling code here:
try {
int row = TablePerson.getSelectedRow();
if (row == -1) {
return;
}
Person person = tableModelPerson.get(row);
person.setNama_depan(textNdepan.getText());
person.setNama_belakang(textNbelakang.getText());
person.setTanggal_lahir((Date) textTanggalLahir.getValue());
personSevice.updatePerson(person);
tableModelPerson.update(row, person);
this.kosongkanText();
} catch (RemoteException exception) {
exception.printStackTrace();
}
}//GEN-LAST:event_updateButtomActionPerformed
private void deleteButtomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteButtomActionPerformed
// TODO add your handling code here:
try{
int row=TablePerson.getSelectedRow();
if(row==-1){
return ;
}
Long id=tableModelPerson.get(row).getId();
personSevice.deletePerson(id);
tableModelPerson.delete(row);
}catch(RemoteException exception){
exception.printStackTrace();
}
}//GEN-LAST:event_deleteButtomActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTable TablePerson;
private javax.swing.JButton deleteButtom;
private javax.swing.JButton insertButtom;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton refreshButtom;
private javax.swing.JFormattedTextField textId;
private javax.swing.JTextField textNbelakang;
private javax.swing.JTextField textNdepan;
private javax.swing.JFormattedTextField textTanggalLahir;
private javax.swing.JButton updateButtom;
// End of variables declaration//GEN-END:variables
}
sekarang tinggal buat Main.java nya untuk konek ke server
package stta.bahrie.sisterclient;
import api.bahrie.service.PersonSevice;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.swing.SwingUtilities;
import stta.bahrie.client.form.FormClient;
/**
*
* @author bahrie
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws RemoteException, NotBoundException {
// TODO code application logic here
Registry registry=LocateRegistry.getRegistry("localhost", 1234);
final PersonSevice service=(PersonSevice) registry.lookup("service");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
FormClient form=new FormClient(service);
form.setLocationRelativeTo(null);
form.setVisible(true);
}
});
}
}
Alhamdulillah sampe disini sudah selesai tinggal testing..
dan dibawah ini adalah screenshoot testingnya…
dan dibawah ini adalah screenshoot testingnya…

Selamat mencoba semoga tidak ada kesulitan.
Tidak ada komentar:
Posting Komentar