Laporan ke 8

16
LABORATORIUM KOMPUTER DASAR PROGRAM STUDI INFORMATIKA / ILMU KOMPUTER PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA PRAKTIKUM PEMROGRAMAN LANJUT MODUL 8 Judul Bab : Graphic User Interface Lanjut Disusun Oleh : Irma Pujadayanti NIM : 135150201111243 Dilaksanakan Tanggal : 23 Mei 2014 Asisten 1 : Aristiawan Asisten 2 : Iqbal Dhea Furqon Tauhid Dosen Pengampu : Ir. Sutrisno , M.T. Pengesahan Tanggal: Asisten SEMESTER :GENAP TAHUN : 2013/2014

Transcript of Laporan ke 8

LABORATORIUM KOMPUTER DASAR

PROGRAM STUDI INFORMATIKA / ILMU

KOMPUTER

PROGRAM TEKNOLOGI INFORMASI

DAN ILMU KOMPUTER

UNIVERSITAS BRAWIJAYA

PRAKTIKUM PEMROGRAMAN LANJUT

MODUL 8

Judul Bab : Graphic User Interface Lanjut

Disusun Oleh : Irma Pujadayanti

NIM : 135150201111243

Dilaksanakan Tanggal : 23 Mei 2014

Asisten 1 : Aristiawan Asisten 2 : Iqbal Dhea Furqon Tauhid

Dosen Pengampu : Ir. Sutrisno , M.T.

Pengesahan

Tanggal:

Asisten

SEMESTER :GENAP TAHUN : 2013/2014

A. Definisi Masalah

Soal 8.1

Modifikasi tabel contoh pada TableAdd.java sehingga tampilan awalnya

adalah sebagai berikut :

Kemudian mengganti kolom sex dengan female(Perempuan) kemudian

menambah lagi kolom untuk male(Laki-Laki).

B. Source Code

1 package GUILanjut;

2 import java.awt.BorderLayout;

3 import java.awt.Color;

4 import java.awt.event.*;

5 import java.util.Vector;

6 import javax.swing.*;

7 import javax.swing.JOptionPane;

8 import javax.swing.table.DefaultTableModel;

9

10 //kelas untuk menambahkan tabel

11 public class tableAdd implements ActionListener {

12

13 JFrame frame;

14 ModifyTable table;

15 Vector rows, columns;

16 DefaultTableModel tabModel;

17 JScrollPane scrollPane;

18 JLabel lblMessage;

19 JButton cmdAdd, cmdDelete;

20 JPanel mainPanel, buttonPanel;

21 private String nama ;

22 private String id;

23 private String addres;

24 private String sex;

25

26 //kosntruktor tableAdd untuk menambahkan komponen

didalamnya

27 tableAdd() {

28 rows = new Vector();

29 columns = new Vector();

30 String[] columnNames = {"ID", "Name",

"Address", "Male", "Female"};

31 addColumns(columnNames);

32

33 tabModel = new DefaultTableModel();

34 tabModel.setDataVector(rows, columns);

35

36 table = new ModifyTable();

37 table.setModel(tabModel);

38 table.setRowSelectionAllowed(false);

39

40 scrollPane = new JScrollPane(table);

41 scrollPane.setViewportView(table);

42

43 lblMessage = new JLabel();

44 buttonPanel = new JPanel();

45

46 cmdAdd = new JButton("Add Row");

47 cmdDelete = new JButton("Delete");

48

49 buttonPanel.add(cmdAdd);

50 buttonPanel.add(cmdDelete);

51

52 cmdAdd.addActionListener(this);

53 cmdDelete.addActionListener(this);

54

55 mainPanel = new JPanel();

56 frame = new JFrame("Simple Table Example");

57 frame.setSize(500, 300);

58

59 frame.setLocationRelativeTo(null);

60 mainPanel.setLayout(new BorderLayout());

61 mainPanel.add("Center", scrollPane);

62 mainPanel.add("South", buttonPanel);

63 mainPanel.setBackground(Color.white);

64 buttonPanel.setBackground(Color.white);

65 table.getParent().setBackground(Color.white);

66 frame.getContentPane().add(mainPanel);

67 frame.setVisible(true);

68

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//

untuk exit

69 }

70

71 //method untuk menambahkan kolom

72 public final void addColumns(String[] colName) {

73 for (String colName1 : colName) {

74 columns.addElement((String) colName1);

75 }

76 }

77

78 //method menambahkan baris

79 public void addRow() {

80 Vector r = new Vector();

81 r = createBlankElement();

82 rows.addElement(r);

83 table.addNotify();

84 }

85

86 //method untuk isi data

87 public Vector createBlankElement() {

88 Vector t = new Vector();

89

90 boolean male = false, female = false;

91

92 // menampilkan menu dialog untuk inputan user

93 id = JOptionPane.showInputDialog("Masukan id

anda");

94 nama = JOptionPane.showInputDialog("Masukan

nama anda");

95 addres = JOptionPane.showInputDialog("Masukan

alamat anda");

96 sex = JOptionPane.showInputDialog("Masukan

jenis kelamin anda (L/P)");

97

98 // boolean untuk L akan dicentang dan P tidak

dicentang

99 if (sex.equalsIgnoreCase("L")) {

100 male=true;

101 } else if (sex.equalsIgnoreCase("P")) {

102 female = true;

103

104 }

105

106 t.addElement(getId());

107 t.addElement(getNama());

108 t.addElement(getAddres());

109 t.addElement((male));

110 t.addElement((female));

111 return t;

112 }

113

114 //method menghapus baris

115 @SuppressWarnings("empty-statement")

116 void deleteRow(int index) {

117 try{

118 if (index != -1){

119 rows.removeElementAt(index);

120 table.addNotify();

121 }

122 }catch(Exception e){

123 JOptionPane.showMessageDialog(cmdDelete,"Array

tidak cukup");

124 }

125 }

126

127

128 //method untuk menambahkan dan menghapus baris saat

menekan button

129 @Override

130 public void actionPerformed(ActionEvent source) {

131 if (source.getSource() == (JButton) cmdAdd) {

132 addRow();

133 }

134 if (source.getSource() == (JButton) cmdDelete)

{

135 deleteRow(table.getSelectedRow());

136 }

137 }

138

139 //kelas untuk menentukan tipe data

140 public class ModifyTable extends JTable {

141

142 @Override

143 public Class getColumnClass(int kolom) {

144 switch (kolom) {

145 case 0:

146 return String.class;//kolom id

bertipe string

147 case 1:

148 return String.class;//kolom nama

bertipe string

149 case 2:

150 return String.class;//kolom alamat

bertipe string

151 case 3:

152 return Boolean.class;//kolom male

bertipe boolean

153

154 case 4:

155 return Boolean.class;//kolom female

bertipe boolean

156 default:

157 return String.class;

158

159 }

160 }

161 @Override

162 public void setValueAt(Object value, int row, int

col){

163 if(col > 2){

164 if(getValueAt(row, 3).equals(true)){

165 super.setValueAt(false, row, 3);

166 super.setValueAt(true, row, 4);

167 } else {

168 super.setValueAt(true, row, 3);

169 super.setValueAt(false, row, 4);

170 }

171 }

172 }

173 }

174

175 //method main untuk instanisasi kelas tableAdd

176 public static void main(String[] args) {

177 tableAdd t = new tableAdd();

178 }

179

180 public String getNama() {

181 return nama;

182 }

183

184 public String getId() {

185 return id;

186 }

187

188 public String getAddres() {

189 return addres;

190 }

191

192 public String getSex() {

193 return sex;

194 }

195 }

C. Pembahaasan

1

2-8

11

13-24

Deklarasi package dengan nama GUI

Deklarasi macam – macam import java dimana seperti yang

sudah dideklarasikan pada program

Deklarasi kelas dengan nama table dimana

mengimplementasikan ActionListener

Deklarasi variabel global dengan nama frame dengan tipe

Jframe,kemudian table dengan tipe ModifyTable,kemudian rows

dan columns dengan tipe Vector,DefaultTableModel dengan

nama tabModel,kemudian scrollPane dengan tipe

JScrollPane,kemudian

lblMessage dengan tipe JLabel kemudian deklarasi

variabel dengan nama cmdAdd dan cmdDelete dengan tipe

Jbutton kemudian dengan tipe JButton kemudian deklarasi

dengan nama variable mainPanel,buttonPanel,kemudian

deklarasi atribut dengan nama nama,kemudian deklarasi

atribut dengan nama id kemudian deklarasi atributnya

dengan nama addres

27

28

29

30

31

33

34

36

37

38

40

43

44

46-47

49-50

52-53

55-57

Deklarasi konstruktor dengan nama tableAdd dimana

berfungsi untuk menambahkan komponennya dimana dia

berisi :

Deklarasi pembuatan objek dengan nama rows dari kelas

Vector

Deklarasi object dari kelas Vector dengan nama Vector

Deklarasi array dengan tipe string dengan nama variabel

columnNames dimana berfungsi untuk judul dari tabelnya

dengan nama yang sudah dideklarasikan

Deklarasi method add dengan parameter dari variabel

columnNames

Deklarasi pembuatan objek dari kelas DefaultTableModel

Deklarasi pemanggilan method dari setData dengan

parameter rows dan columns objek tabModel

Deklarasi pembuatan objek dengan nama table dari

ModifyTable

Deklarasi pemanggilan method setModel dengan parameter

tabModel

Deklarasi pemanggilan method setRowSelectionAllowed

dengan parameter false dimana method ini bertipe boolean

Deklarasi objek dari kelas JscrollPane dengan parameter

table kemudian deklarasi pemanggilan method dengan

nama setViewportView dengan parameter table

Deklarasi objek dari kelas JLabel

Deklarasi pembuatan objek dengan nama buttonPanel dari

kelas JPanel

Deklarasi pembuatan objek tombol dari kelas Jbutton

dimana yang dibuat adalah tombol dengan nama Add Row

dan Delete

Deklarasi menambahkan tombol tersebut ke windownya

Deklarasi pemanggilan method yang menangkap interaksi

user dengan tombol tersebut

Deklarasi pembuatan objek dengan nama mainPanel dari

kelas Jpanel kemudian deklarasi pembuatan objek dari

frame dari kelas Jframe dimana berfungsi untuk tampilan

windownya kemudian deklarasi pemanggilan method

setSize dengan parameter yang sudah ditentukan dari objek

frame dimana berfungsi untuk ukuran windownya

59

60

61

62

63

64

65

66

67

68

72-76

Deklarasi pemanggilan method setLocationRelativeTo

dengan parameter null dimana windownya masih kosongan

Deklarasi pemanggilan method dengan nama setLayout

dengan parameter deklarasi objek method dari

BorderLayout

Deklarasi pemanggilan method add dari objek mainPanel

dengan parameter yang sudah ada dalam program dimana

berfungsi menambahkan scrollPane pada windownya dan

peletakan scrollPane pada windownya

Deklarasi pemanggilan method add dengan parameter yang

sudah ditentukan dimana berfungsi untuk peletakkan

tombol dari buttonPanel

Deklarasi pemanggilan method setBackground dari

mainPanel dengan argumen yang sudah ditentukan yang

berfungsi untuk mengeset warna dari baground dari

windownya

Deklarasi pemanggilan method setBackground dari objek

buttonPanel dengan parameter yang sudah dideklarasikan

dimana berfungsi untuk mengeset baground dari

tombolnya

Deklarasi pemanggilan method dengan nama getParent dan

pemanggilan method setBackground dengan argumen yang

sudah ditentukan dalam program

Deklarasi pemanggilan method dengan nama

getContentPane dan pemanggilan method add dengan

argumen yang sudah ditentukan dalam program

Deklarasi pemanggilan pemanggilan method dengan nama

setVisible dengan argumen true dimana berfungsi untuk

menampilkan windownya

Deklarasi pemanggilan method dengan nama

setDefaultCloseOperation dimana method ini berfungsi

untuk menutup window dan menyatakan proses sudah

selesai

Deklarasi mehod dengan nama addColumns dimana

berparameter Array String dimana parameter disini adalah

judulnya kemudian method ini berisi perulangan untuk

mendapatkan judul tabel dan dimasukkan kedalam

tabelnya

79-83

87-112

116-125

130-137

140-161

Deklarasi method untuk menambahkan baris dimana dia

berisi pembuatan objek kemudian deklarasi dimana objek

yang sudah diciptakan sama dengan method

createBlankElement() kemudian pemanggilan method

addElement dengan argumen yang sudah ditentukan

kemudian pemanggilan method addNotify

Deklarasi method dengan nama createBlankElement

dimana method ini berfungsi untuk mengisi data pada

rownya dimana diawali dengan pembuatan objek dengan

nama t dari kelas Vector kemudian deklarasi variabel

dengan nama male dan female dengan nilai awal false

kemudian deklarasi untuk inputan id,nama,addres dan sex

kemudian masuk kedalam suatu kondisi diman jika kita

menginputkan L maka male yang kecentang yang

mengindikasikan bahwa itu adalah laki – laki kemudian

jika P maka masuk ke dalam kondisi kedua yang

mengindikasikan bahwa itu perempuan

kemudian deklarasi untuk menambahkan inputan user ke

tablenya

Deklarasi method dengan nama deleteRow dimana

berparameter dengan nama int index dimana ini

menangkap nilai indek pada kolomnya yang kita ingin

hapus dimana berisi pertama deklarasi try yaitu Exception

Handling dimana berfungsi untuk menankap error apabila

indeks dalam arraynya sudah habis tapi user tetap menekan

tombol delete kemudian masuk kondisi jika indexnya tidak

sama dengan -1 maka masuk kekondisi bawahnya yaitu

menghapus kolomnya kemudian jika index sama dengan -1

maka error akan tetapi errornya ditangkap oleh catch dan

menampilkan pesan kepada user bahwa array tidak cukup

Deklarasi method actionPerformed dengan parameter

ActionEvent source dimana method ini berfungsi untuk

menankap interaksi user dengan tombol delete dan Addrow

pada JButton

Deklarasi class dari ModifyTable dimana turunan dari

Jtable kemudian deklarasi override method

getColumnClass dimana method ini berisi switch case tipe

dari masing – masing kolom dimana kolom pertama

162-173

176-177

180-195

,kedua,bertipe string kemudian kolom ketiga dan keempat

bertipe boolean jika tidak memenuhi case maka dia

mereturn String

Deklarasi method dengan nama setValauAt dimana method

ini berfungsi untuk untuk memilih salah satu dan

mencentangnya checkbox pada table

Deklarasi method main dimana berisi pembuatan objek

dengan nama t dari kelas tableAdd

Deklarasi method getter dengan nama getNama

,getId,getAddres ,getSex dimana untuk mendapatkan

inputan dari user

D. Screenshoot Program

Tampilan Utama dimana table masih kosong

Dimana ini tampilan kalau kita mengklik tombol Add Row

Tampilan setelah user memasukan data pada Add Row

Meselect kolom yang mau dihapus

Kondisi setelah dihapus

Kondisi ketika tabel sudah kosong akan tetapi user tetap memasakkan diri

menekan tombol Delete

E. Kesimpulan

1. Perbedaan library java AWT dan javax swing

Komponen swing secara langsung diletakkan dilayar menggunakan

kode Java.

Sedangkan AWT seperti java.awt.window atau java.awt.panel harus

digambar menggunakan GUI asli milik platform di mana dia

dijalankan, jadi penampilan program yg ditulis dg AWT akan selalu

berpenampilan seperti platformnya, sedangkan Swing penampilannya

tetap sama.

Dibanding dengan AWT penggunaan komponen-komponen Swing

lebih memakan resource yang lebih sedikit.

AWT memang mampu menangani interface grafis yang sederhana,

tetapi untuk skala proyek AWT ketinggalan jauh daripada Swing.

Komponen Swing berawalan J sedangkan AWT tidak.

2. Kelebihan dan kekurangan dari library package javax swing

Swing memiliki tampilan lebih kaya, bervariasi dan lebihbagus dari

AWT. Swing menggunakan metode Painted yaitu objek GUI digambar

dalam frame kosong sehingga akan berperilaku sama pada setiap

platform.

Kekurangannya Swing tidak dapat berdiri sendiri, akan tetapi

menggunakan mekanisme dasar dari AWT, sehingga antara Swing dan

AWT akan selalu berdampingan.

F. Saran

Semoga lebih baik praktikum kedepannya dan project akhirnya jangan

sulit – sulit kak.