Sistem Informasi ( Pengenalan Swing
Menus ) &
Sistem Informasi with Saving (
Operasi File, Simple Notepad )
Jika pada sesi sebelumnya hanya menampilkan output ke tabel, pada sesi kali
ini akan membahas bagaimana cara menampilkan menu ( Swing Menus ), jika data pada tabel di klik kanan akan ada menu ( hapus ), operasi file, dan menyimpan
data ( pada tabel ) ke notepad. Oke, Langsung
saja berikut langkah-langkahnya gan, monggo disimak:
1.
Buka Netbeans 8.0.2 , buat project baru dengan cara klik file - new project
atau langsung pilih icon new project.
2.
Isi project name ( sesuai keinginan ) dan atur lokasi penyimpanan pekerjaan
pada project location. Jangan lupa untuk menghilangkan centang pada create main
class, klik finish.
3.
Project telah dibuat, kemudian klik kanan pada source packages - new -
JFrame Form, maka akan muncul lembar kerja frame. Kemudian desain sesuai dengan
aplikasi yang akan dibuat.
4.
Berikut gambar tampilan desain yang telah saya buat :
5.
Source code
a. Deklarasi pada public class
public class
utama extends javax.swing.JFrame {
/**
* Creates new form utama
*/
private Vector<Vector<String>>
DB = new Vector(), data = new Vector();
private Vector head = new Vector();
private int max = 0;
private String fileName =
"D:/dataMahasiswa.txt";
private DefaultTableCellRenderer
rightRenderer = new DefaultTableCellRenderer();
public utama() {
initComponents();
rightRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
bacaData();
updateTabel();
}
b. Method bacaData()
Digunakan untuk
membaca data yang telah kita buat dan tersimpan ke notepad.
private void
bacaData(){
try {
BufferedReader br = new
BufferedReader(new FileReader(fileName));
String tmp;
while((tmp=br.readLine())!=null){
StringTokenizer st = new StringTokenizer(tmp,
"#");
Vector<String> tmp2 = new
Vector();
String No = st.nextToken();
String NIM = st.nextToken();
String Nama = st.nextToken();
String Alamat = st.nextToken();
tmp2.add(No); tmp2.add(NIM);
tmp2.add(Nama); tmp2.add(Alamat);
DB.add(tmp2);
if(Integer.parseInt(No) >
max) max = Integer.parseInt(No);
}
br.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
c.
Method UpdateTable()
Digunakan untuk
meng-update tabel. Pada tampilan desain terdapat checkbox ( tampilkan alamat ),
ketika checkbox di checklist maka tabel akan meng-update. Jika checklist
dihilangkan, maka kolom alamat akan hilang.
private void
updateTabel(){
data = new Vector();
head = new Vector();
head.add("No");
head.add("NIM"); head.add("Nama");
if(ckbShowAlamat.isSelected())
head.add("Alamat");
for (Vector<String> v1 : DB) {
Vector<String> v2 = new
Vector<>();
v2.add(v1.get(0));
v2.add(v1.get(1));
v2.add(v1.get(2));
if(ckbShowAlamat.isSelected())
v2.add(v1.get(3));
data.add(v2);
}
tbData.setModel(new
DefaultTableModel(data, head));
tbData.getColumnModel().getColumn(0).setPreferredWidth(50);
tbData.getColumnModel().getColumn(1).setPreferredWidth(100);
tbData.getColumnModel().getColumn(2).setPreferredWidth(200);
if(ckbShowAlamat.isSelected())
tbData.getColumnModel().getColumn(3).setPreferredWidth(300);
tbData.getColumnModel().getColumn(0).setCellRenderer(rightRenderer);
tbData.getColumnModel().getColumn(1).setCellRenderer(rightRenderer);
}
d. Method simpanData()
Digunakan untuk
menyimpan data yang yang telah diinput ke notepad.
private void simpanData(){
try {
BufferedWriter bw = new
BufferedWriter(new FileWriter(fileName));
for (Vector<String> v : DB) {
bw.write(v.get(0)+"#"+v.get(1)+"#"+v.get(2)+"#"+v.get(3));
bw.newLine();
}
bw.close();
} catch (Exception e) {
}
}
e.
Method hapusData()
Digunakan untuk
menghapus data pada tabel. Source code ini beroperasi pada button hapus dan
menu hapus.
private void
hapusData() {
String
nim = tfNIM.getText().trim();
if(nim.equals("")) {
JOptionPane.showMessageDialog(this,
"Tentukan NIM yang ingin dihapus.");
} else {
if(JOptionPane.showConfirmDialog(this, "Data "+nim+"
dihapus?", "Konfirmasi", JOptionPane.YES_NO_OPTION) ==
JOptionPane.NO_OPTION) return;
boolean b = false;
int i;
for (i = 0; i < DB.size(); i++)
{
if(DB.get(i).get(1).equals(nim)) { b = true; break; }
}
if(b){
DB.remove(i);
JOptionPane.showMessageDialog(this, "Proses Hapus sukses.");
max = 0;
for (Vector<String> v :
DB) {
if(Integer.parseInt(v.get(0)) > max) max =
Integer.parseInt(v.get(0));
}
updateTabel();
tfNIM.setText("");
tfNama.setText(""); tfAlamat.setText("");
} else {
JOptionPane.showMessageDialog(this, "Data tidak ditemukan.");
}
}
}
f.
Source code pada button simpan
Untuk menuliskan kode pada
button, klik kanan button simpan – Event
– Action – Action Performed terlebih dahulu atau klik dua kali button tersebut.
private void
bSimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String no = String.valueOf(max+1);
String nim = tfNIM.getText().trim();
String nama = tfNama.getText().trim();
String alamat =
tfAlamat.getText().trim();
if(nim.equals("") ||
nama.equals("") || alamat.equals(""))
JOptionPane.showMessageDialog(this,
"Semua isian harus diisi.");
else {
boolean b = false;
int i;
Vector<String> v = new
Vector<>();
for (i = 0; i < DB.size(); i++)
{
if(DB.get(i).get(1).equals(nim)) { b = true; break; }
}
if(b){
v.add(DB.get(i).get(0));
v.add(nim); v.add(nama); v.add(alamat);
DB.setElementAt(v, i);
updateTabel();
JOptionPane.showMessageDialog(this, "Proses update sukses.");
} else {
v.add(no); v.add(nim);
v.add(nama); v.add(alamat);
DB.add(v);
updateTabel(); max++;
JOptionPane.showMessageDialog(this, "Proses simpan sukses.");
}
tfNIM.setText("");
tfNama.setText(""); tfAlamat.setText("");
tfNIM.setEditable(false);
}
}
g. Kode pada button hapus
private void
bHapusActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
hapusData();
}
h. Source kode pada mouseclicked
Klik kanan
tabel – Event – Mouse – MouseClicked – tulis kode..
private void tbDataMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling
code here:
int row =
tbData.getSelectedRow();
if(row < 0) {
JOptionPane.showMessageDialog(this,
"Pilih data (klik kiri) terlebih dahulu.");
return;
}
tfNIM.setText(DB.get(row).get(1));
tfNama.setText(DB.get(row).get(2));
tfAlamat.setText(DB.get(row).get(3));
tfNIM.setEditable(false);
if(evt.getButton() ==
java.awt.event.MouseEvent.BUTTON3) {
miHapus.setText("Hapus "+tfNIM.getText()+",
"+tfNama.getText());
popupMenu.show(tbData,
evt.getX(), evt.getY());
}
}
i.
Source code pada button tambah
private void
bBaruActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tfNIM.setEditable(true);
tfNIM.setText("");
tfNama.setText(""); tfAlamat.setText(""); tfNIM.requestFocus();
}
j. Kode pada checkbox
private void
ckbShowAlamatActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
updateTabel();
}
k. Kode pada menu hapus(klik kanan)
Cara membuat
menu :
1.
klik kanan Other Component ( terdapat pada menu navigator ) - Add From Pallete – Swing Menus – Popup menu.
2.
klik kanan Popup menu - Add From
Pallete – Swing Menus – Menu Item
private void
bHapusActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
hapusData();
}
l.
Kode pada formWindowClosing
ketika hasil run telah terisi data
maka ketika di close data tersebut tersimpan ke notepad. klik kanan Jframe –
Event – Window – window Closing
private void
formWindowClosing(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
simpanData();
dispose();
}
n. Source code pada textfield NIM, Nama,
dan Alamat
Klik kanan masing-masing textfield –
Event – Action – Action Performed
private void
tfNIMActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tfNama.requestFocus();
}
private void
tfNamaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tfAlamat.requestFocus();
}
private void
tfAlamatActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
bSimpanActionPerformed(null);
}
o. Berikut hasil
Run
Setelah di isi dan disave akan muncul joptionpane message proses
simpan berhasil.
Data yang sudah disave tadi bisa dilihat di notepad, karena tadi di
inputkan buffredreader dan bufferead writer.
Klik kanan pada data yang ada ditabel untuk hapus.
Sekian, monggo di coba gan.. salam sukses..




Tidak ada komentar:
Posting Komentar