Form login akan digunakan oleh petugas perpus untuk masuk kedalam aplikasi perpustakaan, susunan layout pada form login ini seperti langkah berikut
1. Atur agar layout dari Jframe adalah Border Layout Sehingga akan terbagi menjadi 5 buah region seperti gambar berikut yaitu North,South,West dan East
2. Tambahkan 3 buah panel pada 3 posisi yaitu pada posisi North (berinama pnTop), South (berinama pnBottom) dan Center (berinama pnCenter)
3. Atur agar layout dari pnTop dan pnBottom menjadi FlowLayout 4. Atur agar layout dari pnCenter menjadi GridBagLayout
Java Bootcamp 2011 79 package view;
import java.awt.BorderLayout;
public class FrmLogin extends JFrame implements ActionListener {
private JButton btnLogin; private JButton btnTutup;
private JPasswordField txtPassword; private JTextField txtUser;
private ControllerLogin cLogin; /**
* Launch the application. */
public static void main(String[] args) { EventQueue.invokeLater(new Runnable() {
public void run() { try {
FrmLogin frame = new FrmLogin(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getActionCommand().equals("Login")){ cLogin.login(
txtUser.getText(),String.valueOf(txtPassword.getPassword())); } else{ System.exit(0); } } /**
* Create the frame. */ public FrmLogin() { setLocationByPlatform(true); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 259, 188); getContentPane().setLayout(new BorderLayout(0, 0));
Java Bootcamp 2011 80 JPanel pnTop = new JPanel();
getContentPane().add(pnTop, BorderLayout.NORTH);
pnTop.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); JLabel lblLoginAplikasiPerpustakaan = new JLabel(
"Login Aplikasi Perpustakaan"); pnTop.add(lblLoginAplikasiPerpustakaan); JPanel pnBottom = new JPanel();
getContentPane().add(pnBottom, BorderLayout.SOUTH);
pnBottom.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5)); btnLogin = new JButton("Login");
btnLogin.addActionListener(this); pnBottom.add(btnLogin);
btnTutup = new JButton("Tutup"); btnTutup.addActionListener(this); pnBottom.add(btnTutup);
JPanel pnCenter = new JPanel();
getContentPane().add(pnCenter, BorderLayout.CENTER); pnCenter.setLayout(new GridBagLayout());
JLabel lblUser = new JLabel("User");
GridBagConstraints gbcLblUser = new GridBagConstraints(); gbcLblUser.insets = new Insets(0, 0, 5, 5);
gbcLblUser.gridx = 0; gbcLblUser.gridy = 0;
pnCenter.add(lblUser, gbcLblUser); txtUser = new JTextField();
txtUser.setPreferredSize(new Dimension(120, 20));
GridBagConstraints gbcTxtUser = new GridBagConstraints(); gbcTxtUser.insets = new Insets(0, 0, 5, 5);
gbcTxtUser.fill = GridBagConstraints.HORIZONTAL; gbcTxtUser.gridx = 1;
gbcTxtUser.gridy = 0;
pnCenter.add(txtUser, gbcTxtUser);
JLabel lblPassword = new JLabel("Password");
GridBagConstraints gbcLblPassword = new GridBagConstraints(); gbcLblPassword.insets = new Insets(0, 0, 5, 5);
gbcLblPassword.gridx = 0; gbcLblPassword.gridy = 1;
pnCenter.add(lblPassword, gbcLblPassword); txtPassword = new JPasswordField();
GridBagConstraints gbcTxtPassword = new GridBagConstraints(); gbcTxtPassword.insets = new Insets(0, 0, 5, 5);
gbcTxtPassword.fill = GridBagConstraints.HORIZONTAL; gbcTxtPassword.gridx = 1;
gbcTxtPassword.gridy = 1;
pnCenter.add(txtPassword, gbcTxtPassword); setLocationRelativeTo(null);
cLogin=new ControllerLogin(this); }
Java Bootcamp 2011 81 Form Main
1. Atur agar Layout dari FrmMain adalah BorderLayout 2. Tambahkan menubar di North
3. Tambahkan panel sebagai status bar di Sourt dengan nama pnStatusBar 4. Tambahkan desktopPane di Center untuk meletakkan JinternalFrame 5. Kode program untuk FrmMain adalah sebagai berikut
package view; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JMenuBar; import javax.swing.JLabel; import java.awt.FlowLayout; import javax.swing.JDesktopPane; import javax.swing.JMenu; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JMenuItem; import entity.PetugasPerpus;
public class FrmMain extends JFrame implements ActionListener{ private JMenuBar menuBar;
private JPanel pnStatusBar; private JLabel lblUser; private JLabel lblNama;
Java Bootcamp 2011 82 private JMenu mnMaster;
private JMenu mnTransaksi; private JMenu mnLaporan; private JMenu mnKeluar;
private JMenuItem mnuItemMahasiswa; private JMenuItem mnuItemKaryawan; private JMenuItem mnuItemBuku; private JMenuItem mnuItemCD;
private JMenuItem mnuItemTransPeminjaman; private JMenuItem mnuItemTransPengembalian; private JMenuItem mnuItemLaporanAnggota; private JMenuItem mnuItemLaporanDenda; private JMenuItem mnuItemLaporanTransaksi; private JMenuItem mnuItemLaporanKoleksi; private JMenuItem mnuItemLogout;
private JMenuItem mnuItemKeluar;
private static PetugasPerpus petugasAktif;
public void setPetugasAktif(PetugasPerpus petugasPerpus){ FrmMain.petugasAktif=petugasPerpus;
lblUser.setText(petugasAktif.getUser()); lblNama.setText(petugasAktif.getNama()); }
public static PetugasPerpus getPetugasAktif(){ return FrmMain.petugasAktif; } /* * (non-Javadoc) * @see java.awt.event.ActionListener * #actionPerformed(java.awt.event.ActionEvent) */
private FrmDataMahasiswa frmDataMahasiswa; @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource().equals(mnuItemKeluar)){ System.exit(0);
}
else if(e.getSource().equals(mnuItemMahasiswa)){ if(frmDataMahasiswa==null){
frmDataMahasiswa=new FrmDataMahasiswa(); desktopPane.add(frmDataMahasiswa);
desktopPane. getDesktopManager(). maximizeFrame(frmDataMahasiswa); } frmDataMahasiswa.setVisible(true); } }
Java Bootcamp 2011 83 /**
* Create the frame. */
public FrmMain() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 832, 513);
menuBar = new JMenuBar();
mnMaster = new JMenu("Master"); menuBar.add(mnMaster);
mnuItemMahasiswa = new JMenuItem("Mahasiswa"); mnuItemMahasiswa.addActionListener(this); mnMaster.add(mnuItemMahasiswa);
mnuItemKaryawan = new JMenuItem("Karyawan"); mnuItemKaryawan.addActionListener(this); mnMaster.add(mnuItemKaryawan);
mnuItemBuku = new JMenuItem("Buku"); mnuItemBuku.addActionListener(this); mnMaster.add(mnuItemBuku);
mnuItemCD = new JMenuItem("CD"); mnuItemCD.addActionListener(this); mnMaster.add(mnuItemCD);
mnTransaksi = new JMenu("Transaksi");
mnuItemTransPeminjaman = new JMenuItem("Peminjaman"); mnTransaksi.add(mnuItemTransPeminjaman);
mnuItemTransPengembalian = new JMenuItem("Pengembalian"); mnTransaksi.add(mnuItemTransPengembalian);
menuBar.add(mnTransaksi);
mnLaporan = new JMenu("Laporan");
mnuItemLaporanAnggota = new JMenuItem("Laporan Anggota"); mnLaporan.add(mnuItemLaporanAnggota);
mnuItemLaporanKoleksi = new JMenuItem("Koleksi"); mnLaporan.add(mnuItemLaporanKoleksi);
mnuItemLaporanDenda = new JMenuItem("Laporan Denda"); mnLaporan.add(mnuItemLaporanDenda);
mnuItemLaporanTransaksi = new JMenuItem("Transaksi"); mnLaporan.add(mnuItemLaporanTransaksi);
menuBar.add(mnLaporan);
mnKeluar = new JMenu("Keluar");
mnuItemLogout = new JMenuItem("Logout"); mnKeluar.add(mnuItemLogout);
mnuItemKeluar = new JMenuItem("Keluar"); mnuItemKeluar.addActionListener(this); mnKeluar.add(mnuItemKeluar);
menuBar.add(mnKeluar); setJMenuBar(menuBar);
getContentPane().setLayout(new BorderLayout(0, 0)); pnStatusBar = new JPanel();
pnStatusBar.setLayout(new FlowLayout( FlowLayout.RIGHT, 5, 5));
lblUser = new JLabel("New label"); pnStatusBar.add(lblUser);
Java Bootcamp 2011 84 Form Data Mahasiswa
1. Atur agar JinternalFrame layoutnya menjadi BorderLayout
2. Tambahkan 1 buah panel dan letakkan di posisi North, beri nama pnTop 3. Tambahkan 1 buah panel dan letakkan di posisi South, beri nama pnBottom 4. Tambahkan 1 buah ScrollPane dan letakkan di posisi Center, beri nama scollPane,
tambahkan tabel ke scrollpane tersebut
5. Atur agar alignment dari pnTop adalah Left dan pnBottom adalah Right
6. Tambahkan 1 buah label dan 1 buah textbox pada pnTop, untuk label ubah textnya menjadi Cari, untuk textbox ubah namanya menjadi txtCari
7. Tambahkan 4 buah Button dan ubah textnya menjadi Tutup, Hapus, Ubah dan Tambah, untuk namanya tambahkan prefix btn sehingga menjadi btnTutup, btnHapus, btnUbah dan btnTambah
8. Kode program lengkapnya adalah berikut
lblNama = new JLabel("New label"); pnStatusBar.add(lblNama);
getContentPane().add(pnStatusBar, BorderLayout.SOUTH); desktopPane = new JDesktopPane();
desktopPane.setBackground(Color.GRAY);
getContentPane().add(desktopPane, BorderLayout.CENTER);
setMinimumSize(new java.awt.Dimension(844, 599)); }
Java Bootcamp 2011 85 package view; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JPanel; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JTable; import javax.swing.RowFilter; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableRowSorter; import javax.swing.JScrollPane; import controller.ControllerMahasiswa; import javax.swing.JFrame; import java.awt.event.ActionListener; import java.awt.event.ActionEvent;
public class FrmDataMahasiswa extends JInternalFrame implements ActionListener,DocumentListener { private JTextField txtCari;
private JTable table;
private ControllerMahasiswa cMhs;
private TableRowSorter<DefaultTableModel> sorter; public JTable getTable() {
return table; }
/**
* Create the frame. */ public FrmDataMahasiswa() { setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); setMaximizable(true); setClosable(true); setIconifiable(true);
setTitle("Data Mahasiswa"); setBounds(100, 100, 452, 300); JPanel pnBottom = new JPanel();
getContentPane().add(pnBottom, BorderLayout.SOUTH);
pnBottom.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5)); JButton btnTambah = new JButton("Tambah");
btnTambah.addActionListener(this); pnBottom.add(btnTambah);
JButton btnUbah = new JButton("Ubah"); btnUbah.addActionListener(this);
pnBottom.add(btnUbah);
JButton btnHapus = new JButton("Hapus"); pnBottom.add(btnHapus);
Java Bootcamp 2011 86 JButton btnTutup = new JButton("Tutup");
btnTutup.addActionListener(this); pnBottom.add(btnTutup);
JPanel pnTop = new JPanel();
pnTop.setLayout(new FlowLayout(FlowLayout.LEFT,5,5)); getContentPane().add(pnTop, BorderLayout.NORTH); JLabel lblCari = new JLabel("Cari");
pnTop.add(lblCari);
txtCari = new JTextField(); pnTop.add(txtCari);
txtCari.setColumns(20);
txtCari.getDocument().addDocumentListener(this); JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER); table = new JTable();
table.setModel(new DefaultTableModel( new Object[][] {
},
new String[] {
"NPM", "Nama", "Tempat Lahir",
"Tanggal Lahir", "Tahun Masuk"
} ));
scrollPane.setViewportView(table);
sorter = new TableRowSorter<DefaultTableModel>( (DefaultTableModel)table.getModel()); table.setRowSorter(sorter);
cMhs=new ControllerMahasiswa(this); cMhs.findAll();
}
public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Tutup")){
setVisible(false); }
else if(e.getActionCommand().equals("Tambah")){ DialogInputMahasiswa inputMhs=new
DialogInputMahasiswa(cMhs,true); inputMhs.setVisible(true);
}else if(e.getActionCommand().equals("Ubah")){ DialogInputMahasiswa inputMhs=new
DialogInputMahasiswa(cMhs,false); int row=table.getSelectedRow();
if(row==-1) return; inputMhs.setData(
table.getValueAt(row, 0).toString(), table.getValueAt(row, 1).toString(), table.getValueAt(row, 2).toString(),
Java Bootcamp 2011 87 table.getValueAt(row, 3).toString(),
table.getValueAt(row, 4).toString()); inputMhs.setVisible(true);
}else if(e.getActionCommand().equals("Hapus")){ int row=table.getSelectedRow();
if(row==-1) return;
cMhs.deleteMahasiswa(table.getValueAt(row, 0).toString()); }
}
@Override
public void changedUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
newFilter() ; }
@Override
public void insertUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
newFilter() ; }
@Override
public void removeUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
newFilter() ; }
private void newFilter() {
RowFilter<DefaultTableModel, Object> rf = null; //If current expression doesn't parse, don't update. try {
rf = RowFilter.regexFilter(txtCari.getText(), 0, 1); } catch (java.util.regex.PatternSyntaxException e) { return; } sorter.setRowFilter(rf); } }
Java Bootcamp 2011 88 Form Input Mahasiswa
1. Atur agar JDialog menggunakan layout BorderLayout
2. Tambahkan 2 buah panel, 1 panel di posisi South dan beri nama pnBottom 3. 1 panel lagi di posisi Center dan berinama pbContent
4. Atur agar pnBottom menggunakan FlowLayout yang alignmentnya di set Right 5. Atur agar pnContent menggunakan GridBagLayout
6. Tambahkan 2 buah button pada pnBottom, atur agar seperti gambar 7. Tambahkan komponen label dan textfield sesuai gambar
8. Berikut ini kode program lengkapnya package view; import java.awt.BorderLayout; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.FlowLayout; import javax.swing.JButton; import java.awt.GridBagLayout; import javax.swing.JLabel; import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.JTextField; import javax.swing.JFormattedTextField; import controller.ControllerMahasiswa; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.text.ParseException; import java.text.SimpleDateFormat;
public class DialogInputMahasiswa extends JDialog implements ActionListener {
Java Bootcamp 2011 89 private JTextField txtNim;
private JTextField txtNama;
private JTextField txtTempatLahir;
private JFormattedTextField txtFormatTglLahir; private JFormattedTextField txtFormatTahunMasuk; private ControllerMahasiswa cMhs; public DialogInputMahasiswa(ControllerMahasiswa cMhs, boolean insert) { this.cMhs=cMhs; setResizable(false); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 450, 300);
JPanel pnBottom = new JPanel();
getContentPane().add(pnBottom, BorderLayout.SOUTH);
pnBottom.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5)); JButton btnSimpan = new JButton("Simpan");
btnSimpan.addActionListener(this); pnBottom.add(btnSimpan);
JButton btnBatal = new JButton("Batal"); btnBatal.addActionListener(this);
pnBottom.add(btnBatal);
JPanel pnContent = new JPanel();
getContentPane().add(pnContent, BorderLayout.CENTER); GridBagLayout gbl_pnContent = new GridBagLayout(); pnContent.setLayout(gbl_pnContent);
JLabel lblNim = new JLabel("NIM");
GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(0, 0, 5, 5); gbc.gridx = 0;
gbc.gridy = 0;
pnContent.add(lblNim, gbc); txtNim = new JTextField(); txtNim.setEnabled(insert);
GridBagConstraints gbc_5 = new GridBagConstraints(); gbc_5.insets = new Insets(0, 0, 5, 0);
gbc_5.fill = GridBagConstraints.HORIZONTAL; gbc_5.gridx = 1;
gbc_5.gridy = 0;
pnContent.add(txtNim, gbc_5); txtNim.setColumns(20);
JLabel lblNama = new JLabel("Nama");
GridBagConstraints gbc_1 = new GridBagConstraints(); gbc_1.anchor = GridBagConstraints.EAST;
gbc_1.insets = new Insets(0, 0, 5, 5); gbc_1.gridx = 0;
gbc_1.gridy = 1;
Java Bootcamp 2011 90 txtNama = new JTextField();
GridBagConstraints gbc_6 = new GridBagConstraints(); gbc_6.insets = new Insets(0, 0, 5, 0);
gbc_6.fill = GridBagConstraints.HORIZONTAL; gbc_6.gridx = 1;
gbc_6.gridy = 1;
pnContent.add(txtNama, gbc_6); txtNama.setColumns(10);
JLabel lblTempatLahir = new JLabel("Tempat Lahir"); GridBagConstraints gbc_2 = new GridBagConstraints(); gbc_2.anchor = GridBagConstraints.EAST;
gbc_2.insets = new Insets(0, 0, 5, 5); gbc_2.gridx = 0;
gbc_2.gridy = 2;
pnContent.add(lblTempatLahir, gbc_2); txtTempatLahir = new JTextField();
GridBagConstraints gbc_7 = new GridBagConstraints(); gbc_7.insets = new Insets(0, 0, 5, 0);
gbc_7.fill = GridBagConstraints.HORIZONTAL; gbc_7.gridx = 1;
gbc_7.gridy = 2;
pnContent.add(txtTempatLahir, gbc_7); txtTempatLahir.setColumns(10);
JLabel lblTanggalLahir = new JLabel("Tanggal Lahir"); GridBagConstraints gbc_3 = new GridBagConstraints(); gbc_3.anchor = GridBagConstraints.EAST;
gbc_3.insets = new Insets(0, 0, 5, 5); gbc_3.gridx = 0;
gbc_3.gridy = 3;
pnContent.add(lblTanggalLahir, gbc_3);
txtFormatTglLahir = new JFormattedTextField();
GridBagConstraints gbc_8 = new GridBagConstraints(); gbc_8.insets = new Insets(0, 0, 5, 0);
gbc_8.fill = GridBagConstraints.HORIZONTAL; gbc_8.gridx = 1;
gbc_8.gridy = 3;
pnContent.add(txtFormatTglLahir, gbc_8);
JLabel lblTahunMasuk = new JLabel("Tahun Masuk"); GridBagConstraints gbc_4 = new GridBagConstraints(); gbc_4.anchor = GridBagConstraints.EAST;
gbc_4.insets = new Insets(0, 0, 0, 5); gbc_4.gridx = 0;
gbc_4.gridy = 4;
pnContent.add(lblTahunMasuk, gbc_4);
txtFormatTahunMasuk = new JFormattedTextField(); GridBagConstraints gbc_9 = new GridBagConstraints(); gbc_9.fill = GridBagConstraints.HORIZONTAL; gbc_9.gridx = 1; gbc_9.gridy = 4; pnContent.add(txtFormatTahunMasuk, gbc_9); setLocationRelativeTo(null); }
Java Bootcamp 2011 91 public void clear(){
txtNim.setText(""); txtNama.setText(""); txtTempatLahir.setText(""); txtFormatTglLahir.setText(""); txtFormatTahunMasuk.setText(""); }
public void setData(String nim,String nama,String tempatLahir,String tglLahir,String tahunMasuk){ txtNim.setText(nim); txtNama.setText(nama); txtTempatLahir.setText(tempatLahir); txtFormatTglLahir.setText(tglLahir); txtFormatTahunMasuk.setText(tahunMasuk); }
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Batal")){ dispose(); } else{ try { cMhs.setDialogInputMahasiswa(this); if(txtNim.isEnabled()){
cMhs.inputMahasiswa(
txtNim.getText(), txtNama.getText(), txtTempatLahir.getText(),
new SimpleDateFormat("dd/MM/yyyy")
.parse(txtFormatTglLahir.getText()), txtFormatTahunMasuk.getText());
} else{
cMhs.updateMahasiswa(txtNim.getText(),
txtNama.getText(), txtTempatLahir.getText(), new SimpleDateFormat("dd/MM/yyyy") .parse(txtFormatTglLahir.getText()), txtFormatTahunMasuk.getText());
}
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace(); }
} }
Java Bootcamp 2011 92 Form Transaksi Peminjaman
1. Atur agar layout dari JinternalFrame ini menjadi BorderLayout
2. Tambahkan 1 buah panel dan Letakkan di South, kemudian atur agar alignmentnya menjadi Right
3. Tambahkan 3 buah button di panel ini dan atur seperti gambar
4. Tambahkan 1buah TabPane, letakkan di Center kemudian isi dengan 2 buah panel, yaitu pnMahasiswa dan pnKaryawan
5. Sekarang kita akan fokus ke pnMahasiswa
6. Atur agar pnMahasiswa ini menggunakan BorderLayout
7. Tambahkan 1 buah ScrollPane dan letakkan di Center, tambahkan tabel ke scroll panel tersebut.
8. Tambahkan 1 buah panel dengan nama pnInputNim dan letakkan di North, atur agar layoutnya menjadi GridBagLayout, tambahkan komponen ke panel ini dan atur agar seperti gambar
Java Bootcamp 2011 93 package view; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JInternalFrame; import javax.swing.JTabbedPane; import javax.swing.JLabel; import javax.swing.JTextField; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel;
public class FrmTransaksiPeminjaman extends JInternalFrame { private JTextField txtNama;
private JTextField txtNIM;
private JTextField txtKodeKoleksiMhs; private JTable tbPeminjamanMahasiswa; private JTextField txtNik;
private JTextField txtNamaKaryawan;
private JTextField txtKodeKoleksiKaryawan; private JTable tbPeminjamanKaryawan;
public JTextField getTxtNama() { return txtNama;
}
public JTextField getTxtNIM() { return txtNIM;
}
public JTextField getTxtNik() { return txtNik;
}
public JTextField getTxtNamaKaryawan() { return txtNamaKaryawan;
}
public JTextField getTxtKodeKoleksiMhs() { return txtKodeKoleksiMhs;
}
public JTextField getTxtKodeKoleksiKaryawan() { return txtKodeKoleksiKaryawan;
}
public JTable getTbPeminjamanMahasiswa() { return tbPeminjamanMahasiswa;
Java Bootcamp 2011 94 public JTable getTbPeminjamanKaryawan() {
return tbPeminjamanKaryawan; } public FrmTransaksiPeminjaman() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 582, 452); getContentPane().setLayout(new BorderLayout(0, 0)); JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.SOUTH);
panel.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5)); JButton btnSimpan = new JButton("Simpan");
panel.add(btnSimpan);
JButton btnBatal = new JButton("Batal"); panel.add(btnBatal);
JButton btnTutup = new JButton("Tutup"); panel.add(btnTutup);
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); getContentPane().add(tabbedPane, BorderLayout.CENTER); JPanel pnMahasiswa = new JPanel();
tabbedPane.addTab("Mahasiswa", null, pnMahasiswa, null); pnMahasiswa.setLayout(new BorderLayout(0, 0));
JPanel pnInputNIM = new JPanel();
pnMahasiswa.add(pnInputNIM, BorderLayout.NORTH); GridBagLayout gbl_pnInputNIM = new GridBagLayout(); pnInputNIM.setLayout(gbl_pnInputNIM);
JLabel lblNim = new JLabel("NIM");
GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(0, 0, 5, 5); gbc.gridx = 0;
gbc.gridy = 0;
pnInputNIM.add(lblNim, gbc); txtNIM = new JTextField();
GridBagConstraints gbc_1 = new GridBagConstraints(); gbc_1.insets = new Insets(0, 0, 5, 0);
gbc_1.fill = GridBagConstraints.HORIZONTAL; gbc_1.gridx = 1;
gbc_1.gridy = 0;
pnInputNIM.add(txtNIM, gbc_1); txtNIM.setColumns(10);
JLabel lblNama = new JLabel("Nama");
GridBagConstraints gbc_2 = new GridBagConstraints(); gbc_2.anchor = GridBagConstraints.WEST;
gbc_2.insets = new Insets(0, 0, 5, 5); gbc_2.gridx = 0;
gbc_2.gridy = 1;
Java Bootcamp 2011 95 txtNama = new JTextField();
GridBagConstraints gbc_3 = new GridBagConstraints(); gbc_3.insets = new Insets(0, 0, 5, 0);
gbc_3.fill = GridBagConstraints.HORIZONTAL; gbc_3.gridx = 1;
gbc_3.gridy = 1;
pnInputNIM.add(txtNama, gbc_3); txtNama.setColumns(30);
JLabel lblInformasi = new JLabel("Informasi");
GridBagConstraints gbc_4 = new GridBagConstraints(); gbc_4.anchor = GridBagConstraints.WEST;
gbc_4.insets = new Insets(0, 0, 5, 5); gbc_4.gridx = 0;
gbc_4.gridy = 2;
pnInputNIM.add(lblInformasi, gbc_4); JLabel lblMessage = new JLabel("");
GridBagConstraints gbc_5 = new GridBagConstraints(); gbc_5.insets = new Insets(0, 0, 5, 0);
gbc_5.gridx = 1; gbc_5.gridy = 2;
pnInputNIM.add(lblMessage, gbc_5);
JLabel lblKodeKoleksi = new JLabel("Kode Item Koleksi"); GridBagConstraints gbc_6 = new GridBagConstraints(); gbc_6.anchor = GridBagConstraints.EAST;
gbc_6.insets = new Insets(0, 0, 0, 5); gbc_6.gridx = 0;
gbc_6.gridy = 3;
pnInputNIM.add(lblKodeKoleksi, gbc_6); txtKodeKoleksiMhs = new JTextField(); txtKodeKoleksiMhs.setEnabled(false);
GridBagConstraints gbc_7 = new GridBagConstraints(); gbc_7.anchor = GridBagConstraints.WEST;
gbc_7.gridx = 1; gbc_7.gridy = 3;
pnInputNIM.add(txtKodeKoleksiMhs, gbc_7); txtKodeKoleksiMhs.setColumns(20);
JScrollPane scrollPane = new JScrollPane();
pnMahasiswa.add(scrollPane, BorderLayout.CENTER); tbPeminjamanMahasiswa = new JTable();
tbPeminjamanMahasiswa.setModel(new DefaultTableModel( new Object[][] {
},
new String[] {
"Kode Item Koleksi", "Judul", "Referensi"
} ));
scrollPane.setViewportView(tbPeminjamanMahasiswa); JPanel pnKaryawan = new JPanel();
tabbedPane.addTab("Karyawan", null, pnKaryawan, null); pnKaryawan.setLayout(new BorderLayout(0, 0));
JPanel pnInputNik = new JPanel();
pnKaryawan.add(pnInputNik, BorderLayout.NORTH); GridBagLayout gbl_pnInputNik = new GridBagLayout(); pnInputNik.setLayout(gbl_pnInputNik);
Java Bootcamp 2011 96 JLabel lblNik = new JLabel("NIK");
GridBagConstraints gbc_8 = new GridBagConstraints(); gbc_8.anchor = GridBagConstraints.WEST;
gbc_8.insets = new Insets(0, 0, 5, 5); gbc_8.gridx = 0;
gbc_8.gridy = 0;
pnInputNik.add(lblNik, gbc_8); txtNik = new JTextField(); txtNik.setColumns(10);
GridBagConstraints gbc_9 = new GridBagConstraints(); gbc_9.fill = GridBagConstraints.HORIZONTAL;
gbc_9.insets = new Insets(0, 0, 5, 0); gbc_9.gridx = 1;
gbc_9.gridy = 0;
pnInputNik.add(txtNik, gbc_9);
JLabel label_1 = new JLabel("Nama");
GridBagConstraints gbc_10 = new GridBagConstraints(); gbc_10.anchor = GridBagConstraints.WEST;
gbc_10.insets = new Insets(0, 0, 5, 5); gbc_10.gridx = 0;
gbc_10.gridy = 1;
pnInputNik.add(label_1, gbc_10); txtNamaKaryawan = new JTextField(); txtNamaKaryawan.setColumns(30);
GridBagConstraints gbc_11 = new GridBagConstraints(); gbc_11.fill = GridBagConstraints.HORIZONTAL;
gbc_11.insets = new Insets(0, 0, 5, 0); gbc_11.gridx = 1;
gbc_11.gridy = 1;
pnInputNik.add(txtNamaKaryawan, gbc_11);
JLabel label_4 = new JLabel("Kode Item Koleksi"); GridBagConstraints gbc_14 = new GridBagConstraints(); gbc_14.anchor = GridBagConstraints.EAST;
gbc_14.insets = new Insets(0, 0, 5, 5); gbc_14.gridx = 0;
gbc_14.gridy = 2;
pnInputNik.add(label_4, gbc_14);
txtKodeKoleksiKaryawan = new JTextField(); txtKodeKoleksiKaryawan.setEnabled(false); txtKodeKoleksiKaryawan.setColumns(20);
GridBagConstraints gbc_15 = new GridBagConstraints(); gbc_15.insets = new Insets(0, 0, 5, 0);
gbc_15.anchor = GridBagConstraints.WEST; gbc_15.gridx = 1;
gbc_15.gridy = 2;
pnInputNik.add(txtKodeKoleksiKaryawan, gbc_15); JScrollPane scrollPane_1 = new JScrollPane(); pnKaryawan.add(scrollPane_1, BorderLayout.CENTER);
Java Bootcamp 2011 97
Controller
Controller Login
tbPeminjamanKaryawan = new JTable();
tbPeminjamanKaryawan.setModel(new DefaultTableModel( new Object[][] {
},
new String[] {
"Kode Item Koleksi", "Judul", "Referensi"
} ));
scrollPane_1.setViewportView(tbPeminjamanKaryawan); }
public void clearKaryawan() { txtNik.setText(""); txtNama.setText(""); DefaultTableModel dtm=(DefaultTableModel) tbPeminjamanKaryawan.getModel(); dtm.setRowCount(0); } } package controller; import javax.swing.JOptionPane; import view.FrmLogin; import view.FrmMain; import dao.DaoPetugasPerpus; import entity.PetugasPerpus; public class ControllerLogin {
private DaoPetugasPerpus daoPetugasPerpus; private FrmLogin frmLogin;
private FrmMain frmMain;
private PetugasPerpus petugasPerpus;
public ControllerLogin(FrmLogin frmLogin) {
// TODO Auto-generated constructor stub
daoPetugasPerpus=new DaoPetugasPerpus(); this.frmLogin=frmLogin;
frmMain=new FrmMain(); }
public void login(String user,String password) {
if(daoPetugasPerpus.cekUserPassword(user, password)){ frmLogin.setVisible(false);
Java Bootcamp 2011 98 Controller Mahasiswa
frmMain.setVisible(true);
frmMain.setPetugasAktif(petugasPerpus); }
else{
JOptionPane.showMessageDialog( frmLogin,"Login gagal",
"Perhatian",JOptionPane.WARNING_MESSAGE); } } } package controller; import java.util.Date; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import view.DialogInputMahasiswa; import view.FrmDataMahasiswa; import dao.DaoMahasiswa; import entity.Mahasiswa;
public class ControllerMahasiswa {
private DaoMahasiswa daoMahasiswa;
private FrmDataMahasiswa frmDataMahasiswa;
private DialogInputMahasiswa dialogInputMahasiswa;
public ControllerMahasiswa(FrmDataMahasiswa frmDataMahasiswa){ daoMahasiswa=new DaoMahasiswa();
this.frmDataMahasiswa=frmDataMahasiswa; }
public void setDialogInputMahasiswa(DialogInputMahasiswa dialogInputMahasiswa) {
this.dialogInputMahasiswa = dialogInputMahasiswa; }
public void inputMahasiswa(String npm,String nama,String tmpLahir,Date tglLahir,String tahunMasuk) {
Mahasiswa mahasiswa=new Mahasiswa(); mahasiswa.setNim(npm);
mahasiswa.setNama(nama);
mahasiswa.setTahunMasuk(Integer.parseInt(tahunMasuk)); mahasiswa.setTglLahir(tglLahir);
mahasiswa.setTmpLahir(tmpLahir); if(daoMahasiswa.insert(mahasiswa)){
dialogInputMahasiswa.clear(); findAll();
Java Bootcamp 2011 99 else{ JOptionPane.showMessageDialog(dialogInputMahasiswa, "Penyimpanan gagal", "Perhatian",JOptionPane.WARNING_MESSAGE); } }
public void updateMahasiswa(String npm,String nama,String tmpLahir,Date tglLahir,String tahunMasuk){
Mahasiswa mahasiswa=new Mahasiswa(); mahasiswa.setNim(npm);
mahasiswa.setNama(nama);
mahasiswa.setTahunMasuk(Integer.parseInt(tahunMasuk)); mahasiswa.setTglLahir(tglLahir);
mahasiswa.setTmpLahir(tmpLahir); if(daoMahasiswa.update(mahasiswa)){
dialogInputMahasiswa.clear(); findAll(); } else{ JOptionPane.showMessageDialog(dialogInputMahasiswa, "Penyimpanan gagal", "Perhatian",JOptionPane.WARNING_MESSAGE); } }
public void deleteMahasiswa(String npm) { Mahasiswa mahasiswa=new Mahasiswa(); mahasiswa.setNim(npm);
if(daoMahasiswa.delete(mahasiswa)){ findAll(); } else{ JOptionPane.showMessageDialog(dialogInputMahasiswa, "Penghapusan gagal", "Perhatian",JOptionPane.WARNING_MESSAGE); } }
public void findAll() {
Mahasiswa[] lstMahasiswa=daoMahasiswa.findAll(); DefaultTableModel dtm=(DefaultTableModel)
frmDataMahasiswa.getTable().getModel(); dtm.setRowCount(0);
for(Mahasiswa mahasiswa : lstMahasiswa){ dtm.addRow(new Object[]{ mahasiswa.getNim(),mahasiswa.getNama(), mahasiswa.getTmpLahir(), mahasiswa.getTglLahir(),mahasiswa.getTahunMasuk() }); } } }
Java Bootcamp 2011 100
Data Access Object
Salah satu aspek dari lapisan bisnis adalah lapisan akses data yang menghubungkan layanan dengan database. Mengakses data bervariasi tergantung pada sumber data. Akses ke data persisten sangat bervariasi tergantung pada jenis penyimpanan (database, flat file, file xml, dan sebagainya) dan bahkan berbeda dari pelaksanaannya (misalnya berbeda-dialek SQL). Tujuannya adalah untuk merangkum semua akses ke data dan menyediakan interface. Ini disebut pola DAO.
Dari sudut pandang aplikasi, tidak ada bedanya ketika mengakses sebuah database relasional atau mem-parsing file xml (menggunakan DAO). DAO ini biasanya mampu menciptakan sebuah instance dari objek data ("untuk membaca data") dan juga untuk menyimpan data sebagai sumber data.
Java Bootcamp 2011 101 Kode Program untuk Kelas Database
package helper; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Database {
private Connection con;
private PreparedStatement prep; private ResultSet rs;
public boolean connect() { try {
Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/perpustakaan", "root", ""); } catch (SQLException ex) {
System.out.println("Error 1 : " + ex.getMessage()); return false;
} catch (ClassNotFoundException ex) {
System.out.println("Error 2 : " + ex.getMessage()); return false; } return true; } public Database(){ connect(); }
public ResultSet getRs() { return rs;
}
public boolean dml(String query, boolean getRow, Object... objects) { try {
prep = con.prepareStatement(query); int i = 1;
for (Object obj : objects) { prep.setObject(i, obj); i++; } if (getRow) { rs = prep.executeQuery(); } else { prep.executeUpdate(); } } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); return false;
}
return true; }
Java Bootcamp 2011 102
Kode Program untuk Dao
Kelas AbstractDao
public int getGeneratedKeys() { int keys=0;
try{
if(dml("SELECT LAST_INSERT_ID();",true)){ rs.next();
keys=rs.getInt("LAST_INSERT_ID()"); rs.close(); return keys; } return -1; }catch(SQLException e){ return -1; } } } package dao; import java.sql.ResultSet; import helper.Database;
public abstract class AbstractDao<T> { protected Database database; protected String ss=""; protected ResultSet rs; public AbstractDao(){
database=new Database(); }
public abstract boolean insert(T obj); public abstract boolean update(T obj); public abstract boolean delete(T obj); public abstract T[] findAll();
public abstract T findById(int id); }
Java Bootcamp 2011 103 Kelas DaoMahasiswa package dao; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import entity.Mahasiswa;
public class DaoMahasiswa extends AbstractDao<Mahasiswa> { @Override
public boolean delete(Mahasiswa obj) {
// TODO Auto-generated method stub
obj.setId(findId(obj.getNim()));
ss="delete mahasiswa where idanggota=?"; if(!database.dml(ss, false, obj.getId()))
return false;
ss="delete anggota where idanggota=?"; if(!database.dml(ss, false, obj.getId()))
return false; return true;
}@Override
public Mahasiswa[] findAll() {
// TODO Auto-generated method stub
ss="select a.idAnggota,nim,nama,tmplahir,tgllahir,tahunmasuk "; ss+="from mahasiswa m ";
ss+="inner join anggota a on m.idanggota=a.idanggota"; if(database.dml(ss, true)){
rs=database.getRs();
List<Mahasiswa> lstMahasiswa=new ArrayList<Mahasiswa>();
try {
while(rs.next()){
Mahasiswa mahasiswa=new Mahasiswa(); mahasiswa.setId(rs.getInt("idAnggota")); mahasiswa.setNim(rs.getString("nim")); mahasiswa.setNama(rs.getString("nama"));
mahasiswa.setTmpLahir(rs.getString("tmplahir")); mahasiswa.setTglLahir(rs.getDate("tgllahir")); mahasiswa.setTahunMasuk(rs.getInt("tahunmasuk")); lstMahasiswa.add(mahasiswa); } rs.close(); return lstMahasiswa.toArray( new Mahasiswa[lstMahasiswa.size()]); } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); return null; } } return null; } @Override
public Mahasiswa findById(int id) {
// TODO Auto-generated method stub
return null; }
Java Bootcamp 2011 104 @Override
public boolean insert(Mahasiswa obj) {
// TODO Auto-generated method stub
ss="insert into anggota(nama,tmplahir,tgllahir)values(?,?,?);"; if(!database.dml(ss, false,
obj.getNama(),obj.getTmpLahir(),obj.getTglLahir())){ return false;
}
obj.setId(database.getGeneratedKeys());
ss="insert into mahasiswa(idanggota,nim,tahunMasuk)values(?,?,?)"; if(!database.dml(ss, false,