Java Swing Mohammad Iqbal Slide 1 Macam GUI

Java Swing Mohammad Iqbal : Slide 1

Macam GUI pada Java • AWT (Abstract Window Toolkit) – SUN Microsystem -> Oracle Product 1. AWT adalah GUI Toolkit pertama pada bahasa pemrograman Java, sayang-nya AWT ini sangat kekurangan komponen yang biasa digunakan untuk membangun sebuah aplikasi desktop secara lengkap (komponen tabel saja tidak ada ) 2. Aplikasi yang dibangun menggunakan AWT (Abstract Window Toolkit) akan tampak seperti aplikasi native yaitu, jika aplikasi yang dibangun menggunakan AWT ini dijalankan pada Sistem Operasi Windows. Maka aplikasi ini akan terlihat seperti aplikasi Windows pada umum-nya, dan begitu juga jika dijalankan pada Sistem Operasi Mac ataupun GNU/Linux. Kenapa ini bisa terjadi, karena AWT (Abstract Window Toolkit) ini benar-benar memanggil native subrutin untuk menggambar setiap komponen-nya ke layar. • Java Swing – SUN Microsystem -> Oracle 1. Adalah GUI Toolkit dalam Pemrograman GUI di Java, 2. Banyak dikenal dikarenakan dukungan tutorialnya banyak di Internet, dan juga merupakan standart dari Java sehingga tidak perlu melakukan penambahan library lagi kalau ingin menggunakan GUI Toolkit ini. 3. Terdapat 2 IDE besar yang menggunakan GUI Toolkit Java Swing yaitu Net. Beans IDE(Open. Source) dan Intelli. J IDEA (mempunyai versi Open. Source dan Komersial) 4. Dibandingkan dengan AWT, Swing mempunyai lebih banyak komponen pendukung untuk membangun sebuah aplikasi yang lengkap untuk keperluan desktop. 5. Swing ini 100 % ditulis dengan bahasa pemrograman Java tanpa adanya sebuah wrapper untuk memanggil rutin-rutin native code via JNI (Java Native Interface). Seluruh komponen yang terdapat pada Swing, semuanya murni digambar sendiri menggunakan API (Application Programming Interface) 2 D untuk memanggil rutin-rutin dasar penggambaran komponen-nya. Dengan model seperti ini, memungkinkan sekali aplikasi yang dibangun menggunakan Swing tampak sama persis di berbagai macam Sistem Operasi. 6. Swing juga mempunyai kemampuan untuk berganti-ganti tampilan menggunakan LAF (Look And Feel) atau themes Sayang-nya, jika kita menginginkan tampilan GUI yang native (tampilan-nya sama seperti aplikasi-aplikasi lain pada sistem operasi target) Swing seperti-nya masih terasa kurang smooth terutama dukungan pada font rendering-nya. Java Swing Mohammad Iqbal : Slide 2

Macam GUI pada Java SWT (Standart Widget Tookit) – IBM Product -> Eclipse Foundation SWT (Standart Widget Toolkit) ini adalah sebuah GUI Toolkit yang dikeluaran oleh IBM sebagai alternatif dari AWT/Java Swing milik SUN Microsystem, yang membedakan antara SWT (Standart Widget Toolkit) dan AWT/Java Swing adalah SWT ini benar-benar mengakses native GUI library yang terdapat pada Sistem Operasi melalui JNI (Java Native Interface). Dengan model seperti ini, memungkinkan tampilan aplikasi yang dibangun menggunakan GUI Toolkit SWT menjadi sama persis dengan aplikasi native lainnya. Kekurangan dari model pemanggilan native GUI library seperti ini adalah kita harus menyediakan library untuk tiap-tiap Sistem Operasi target aplikasi kita. Qt. Jambi – Trolltech -> Nokia Product -> Stopped and Taken By Community • Pernah menggunakan Desktop Environment KDE ? Ingin membuat aplikasi yang tampilan-nya mirip dengan KDE menggunakan bahasa java sebagai dasar-nya, maka Qt. Jambi adalah pilihan yang tepat. Karena Qt. Jambi ini merupakan binding Qt Framework dengan bahasa Java, tetapi sayang-nya proyek Qt. Jambi sudah tidak disupport oleh Nokia dan secara resmi telah ditutup Untung-nya, awal tahun ini ada beberapa developer yang peduli dengan kelangsungan proyek ini dan akhir-nya membuat sebuah komunitas untuk melanjutkan pengembangan proyek Qt. Jambi, sekarang teman-teman bisa melihat perkembangan proyek Qt. Jambi ini pada halaman Qt. Jambi Community Java. GNOME – Community Product • Kalau Qt. Jambi diatas ditujukan untuk teman-teman yang sudah akrab dengan API (Application Programming Interface) Qt Framework, berbeda dengan Java. GNOME Proyek ini lebih dikhususkan untuk teman-teman pecinta GTK atau yang paling banyak dikenal yaitu GNOMESama seperti GUI Toolkit SWT dan QTJambi, Java. GNOME ini juga mengakses native library tetapi API yang digunakan adalah API dari GTK. Untuk teman-teman yang sudah terbiasa membangun aplikasi menggunakan Glade, maka teman-teman bisa men-design form-nya menggunakan Glade dan memanggil-nya menggunakan bahasa java melalui Java. GNOME Java Swing Mohammad Iqbal : Slide 3

Apakah Swing? • Grup 14 packages untuk GUI • 451 class • Bagian dari JFC (Java Foundation Classes) Java Swing Mohammad Iqbal : Slide 4

Swing dan AWT • AWT = Abstract Windows Toolkit (cross platform) • AWT = Versi lama Java GUI 'heavyweight‘ (elemennya terhubung dengan UI OS), • Contoh : Frame AWT bukan JFrame Swing • Hampir semua komponen Swing 'lightweight' (ringan, tdk terhubung dgn OS UI elemen) • Jangan gabung AWT dan Swing, Gunakan Swing saja Java Swing Mohammad Iqbal : Slide 5

Dari AWT ke Swing • AWT: Abstract Windowing Toolkit • import java. awt. * • Swing: new with Java 2 • • • import javax. swing. * Merupakan Perluasan dari AWT Banyak komponen baru yang improved. Standard dialog boxes, tooltips, … Look-and-feel, skins Event listeners • API: • http: //java. sun. com/j 2 se/1. 3/docs/api/index. html Java Swing Mohammad Iqbal : Slide 6

API Komponen GUI Java: GUI komponen = class – Properties JButton – Methods – Events Java Swing Mohammad Iqbal : Slide 7

Menggunakan Komponen GUI 1. Create it (Buat) • Instantiate object: b = new JButton(“press me”); 2. Configure it (Atur) • • Properties: b. text = “press me”; Methods: b. set. Text(“press me”); 3. Add it (Tambahkan) • panel. add(b); 4. Listen to it (dengarkan) • JButton Events: Listeners Java Swing Mohammad Iqbal : Slide 8

Anatomi Aplikasi GUI Internal structure JFrame JPanel containers JPanel JButton JLabel Java Swing Mohammad Iqbal : Slide 9

Menggunakan Komponen GUI 1. 2. 3. 4. Create it Configure it Add children (jika container) Add to parent (kalau bukan menggunakan JFrame) 5. Listen to it Urutan sangat Penting diperhatikan Java Swing Mohammad Iqbal : Slide 10

Membuat GUI dari bottom up Listener • Create: • • Frame Panel Components Listeners • Add: (bottom up) • listeners into components • components into panel • panel into frame JLabel JButton JPanel JFrame Java Swing Mohammad Iqbal : Slide 11

Contoh Langkah Program JFrame f = new JFrame(“title”); JPanel p = new JPanel( ); JButton b = new JButton(“press me”); p. add(b); f. set. Content. Pane(p); // add button to panel // add panel to frame f. show(); press me Java Swing Mohammad Iqbal : Slide 12
![Contoh kode Aplikasi import javax. swing. *; class hello { public static void main(String[] Contoh kode Aplikasi import javax. swing. *; class hello { public static void main(String[]](http://slidetodoc.com/presentation_image_h/0cf3617de98575ca278f6ad5e7b705fc/image-13.jpg)
Contoh kode Aplikasi import javax. swing. *; class hello { public static void main(String[] args){ JFrame f = new JFrame(“title”); JPanel p = new JPanel(); JButton b = new JButton(“press me”); p. add(b); f. set. Content. Pane(p); f. show(); } // add button to panel // add panel to frame press me } Java Swing Mohammad Iqbal : Slide 13

Swing dan threads • Thread termasuk dalam proses lightweight • Kebanyakan komponen Swing tidak thread -safe • Solusinya adalah harus yakin bahwa semua kode yang men-create dan memodifikasi komponen Swing dieksekusi dalam thread 'event-dispatching‘ yang sama Java Swing Mohammad Iqbal : Slide 14
![Swing dan Threads Contoh Aplikasi Swing : Starting-up public static void main(String[] args) { Swing dan Threads Contoh Aplikasi Swing : Starting-up public static void main(String[] args) {](http://slidetodoc.com/presentation_image_h/0cf3617de98575ca278f6ad5e7b705fc/image-15.jpg)
Swing dan Threads Contoh Aplikasi Swing : Starting-up public static void main(String[] args) { Swing. Utilities. invoke. Later(new Runnable() { public void run() { create. And. Show. GUI(); // << methode untuk memulai Swing } }); } Java Swing Mohammad Iqbal : Slide 15

create. And. Show. GUI private static void create. And. Show. GUI() { //Create and set up the window. JFrame frame = new JFrame("Hi. . "); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); //Add a label. JLabel label = new JLabel("Hello World"); frame. get. Content. Pane(). add(label); //Display the window. frame. pack(); frame. set. Visible(true); } Silahkan coba Kode ini ! Java Swing Mohammad Iqbal : Slide 16

Layout Manager • Swing UI menggunakan Layout. Manager untuk mengontrol posisi item • Ini adalah pilihan untuk dapat bekerja dalam cara yang berbeda tapi lebih mudah : – frame. set. Layout(null); Java Swing Mohammad Iqbal : Slide 17

Posisi Absolut JFrame frame = new JFrame("I am a JFrame"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. set. Bounds(20, 300, 100); frame. set. Layout(null); JButton butt=new JButton("Click me"); frame. get. Content. Pane(). add(butt); butt. set. Bounds(20, 200, 20); frame. set. Visible(true); Silahkan coba Kode ini ! - Mulai dengan contoh sebelumnya dan tulis kode ini di bagian Createand. Show. GUI() Java Swing Mohammad Iqbal : Slide 18

Respon pada user actions • Berdasarkan model event-handling • Komponen baru seperti button harus memiliki Listener khusus • Obyek Listener diprogram untuk merespon Event objects yang tiba dari komponen • Obyek Listener harus diimplementasikan pada interface yang tepat Java Swing Mohammad Iqbal : Slide 19

Mekanisme Event-handling Event object Interface, mis: Action. Listener, mis : JFrame Ketika di klik Komponen, mis: button Saat inisialisasi, komponen akan memilih obyek lain mis: JFrame, untuk menjadi listener Eksekusi method interface yang tepat, mis: action. Performed Java Swing Mohammad Iqbal : Slide 20

Interface • Interface adalah kumpulan methods • Misalnya : interface Action. Listener memiliki satu method – public void action. Performed(Action. Event e) • Class dapat mendeklarasikan method ini sebagai implements, misalnya : public class Main implements Action. Listener • Harus didefenisikan mthod dalam interface ini atau compiler akan gagal mengkompilasinya. • Suatu Class dapat mengimplementasikan multiple interface. Java Swing Mohammad Iqbal : Slide 21

Demo klik Button • • • JButton dan JLabel click. Counts akan mengingat jumlah klik Class implements Action. Listener Buat JFrame, JButton dan JLabel Instantiate obyek aplikasi Set untuk menjadi listener dari button Java Swing Mohammad Iqbal : Slide 22

Demo klik Button * Main. java * * demonstrasi respon klik button */ package swingprogs; import javax. swing. *; import java. awt. event. *; public class Main implements Action. Listener { private static void create. And. Show. GUI() { // make frame. . JFrame frame = new JFrame("I am a JFrame"); frame. set. Default. Close. Operation(JFrame. EXIT_ON _CLOSE); frame. set. Bounds(20, 300, 100); frame. get. Content. Pane(). set. Layout(null); // make a button JButton butt=new JButton("Click me"); frame. get. Content. Pane(). add(butt); butt. set. Bounds(20, 200, 20); // instantiate an application object Main app = new Main(); // make the label app. label = new JLabel("0 clicks"); app. label. set. Bounds(20, 40, 20); frame. get. Content. Pane(). add(app. label); // set the application object to be thing which // listens to the button butt. add. Action. Listener(app); frame. set. Visible(true); } Java Swing Mohammad Iqbal : Slide 23

Demo klik Button public void action. Performed(Action. Event e) { // Ini akan dieksekusi ketika button diklik click. Count++; label. set. Text("Clicks = "+click. Count); } public static void main(String[] args) { // Memulai Swing GUI Swing. Utilities. invoke. Later(new Runnable() { public void run() { create. And. Show. GUI(); } }); } // application object fields int click. Count=0; JLabel label; } Java Swing Mohammad Iqbal : Slide 24

Button yang mana yang diklik? • Jika menggunakan banyak button, setiap button harus me-link ke action. Performed • Bagaimana mengetahui button yang mana yang diklik? • Gunakan method. get. Source pada obyek Action. Event Java Swing Mohammad Iqbal : Slide 25

Contoh mendeteksi button yang diklik butt 1=new JButton("Button 1"); . . butt 2 = new JButton("Button 2"); . . public void action. Performed(Action. Event e) { if (e. get. Source()==butt 1) label. set. Text("Butt 1 clicked"); else Silahkan coba Kode ini ! label. set. Text("Butt 2 clicked"); } Java Swing Mohammad Iqbal : Slide 26

Perhatikan dan Rasakan Look and Feel (La. F) CDE/Motif Windows Metal Quaqua JTatto Tampilan ini tergantung pada implementasi library La. F, Contoh library lain untuk melakukan make over tampilan aplikasi yang menggunakan bahasa pemrograman java : Substance, Quaqua, JTatto, serta Mac. Widgets. Baca di : http: //blog. fastncheap. com/look-feel-java-swing/#ixzz 1 xq. VFSg. C 0 Java Swing Mohammad Iqbal : Slide 27

Setting La. F (Look and Feel) try { UIManager. set. Look. And. Feel( "com. sun. java. swing. plaf. motif. Motif. Look. And. Feel" ); } catch (Exception e) { System. out. println("Cant get laf"); }. . JFrame frame = new JFrame(); This in main() - set laf as first step try. . catch. . because could fail UIManager is in java. lang Java Swing Mohammad Iqbal : Slide 28
![Menemukan La. F yang terinstall dalam Sistem Object a[]= UIManager. get. Installed. Look. And. Menemukan La. F yang terinstall dalam Sistem Object a[]= UIManager. get. Installed. Look. And.](http://slidetodoc.com/presentation_image_h/0cf3617de98575ca278f6ad5e7b705fc/image-29.jpg)
Menemukan La. F yang terinstall dalam Sistem Object a[]= UIManager. get. Installed. Look. And. Feels(); for (int i=0; i<a. length; i++) System. out. println(a[i]); Java Swing Mohammad Iqbal : Slide 29

Dekorasi Frame JFrame. set. Default. Look. And. Feel. Decorated(true); . . Tinggal panggil JFrame constructor Java Swing Mohammad Iqbal : Slide 30

Swing memiliki banyak Class Internal structure Containers Sesuatu tempat yang mengumpulkan sesuatu lainnya Mis: JFRame, JPanel JFrame containers JPanel Controls JButton JLabel User I/O widget Mis: Jbutton, JLabel Java Swing Mohammad Iqbal : Slide 31

Container top level containers - JFrame JApplet JDialog General purpose containers • panel • scroll pane • split pane • tabbed pane • tool bar Java Swing Mohammad Iqbal : Slide 32

JPanel ( pada create. And. Show. GUI) JFrame. set. Default. Look. And. Feel. Decorated(true); JFrame frame = new JFrame("I am a JFrame"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. set. Bounds(20, 300, 100); frame. set. Layout(null); //Create a panel JPanel my. Panel = new JPanel(); my. Panel. set. Background(new Color(255, 3, 25)); my. Panel. set. Opaque(true); //Make it the content panel frame. set. Content. Pane(my. Panel); frame. set. Visible(true); Java Swing Mohammad Iqbal : Slide 33

JPanel • adalah subclass dari JComponent • Merupakan komponen Swing yang bukan bagian dari top-level container, tapi digunakan sebagai general purpose container • Kita dapat menambahkan border dan tooltip di sini. Java Swing Mohammad Iqbal : Slide 34

Tool-tip dan border . . my. Panel. set. Opaque(true); my. Panel. set. Tool. Tip. Text("I'm a JPanel"); my. Panel. set. Border(Border. Factory. create. Line. Border(Color. white)); frame. set. Content. Pane(my. Panel); . . Java Swing Mohammad Iqbal : Slide 35

JSplit. Pane . . set. Layout(null); //Create a split pane JSplit. Pane my. Pane = new JSplit. Pane(); my. Pane. set. Opaque(true); frame. set. Content. Pane(my. Pane); frame. set. Visible(true); Java Swing Mohammad Iqbal : Slide 36

JSplit. Pane menggunakan JPanels //Create a split pane JSplit. Pane my. Pane = new JSplit. Pane(); my. Pane. set. Opaque(true); my. Pane. set. Divider. Location(150); // make two panels JPanel right = new JPanel(); right. set. Background(new Color(255, 0, 0)); JPanel left = new JPanel(); left. set. Background(new Color(0, 255, 0)); // set as left and right in split my. Pane. set. Right. Component(right); my. Pane. set. Left. Component(left); Java Swing Mohammad Iqbal : Slide 37

Latihan • Buatlah Program • Buttons set the colour of the left hand pane Java Swing Mohammad Iqbal : Slide 38

JText. Field • Untuk satu baris input teks • Methods : get. Text, set. Text • Dapat menggunakan Action. Listener, yang dipicu ketika tombol Enter ditekan Java Swing Mohammad Iqbal : Slide 39

Contoh JText. Field • • • Cek Main object fields untuk label dan field teks Buat panel, set sebagai content pane Buat dan tambahkan field teks Tambahkan actionlistener Buat dan tambahkan label Program action. Performed Java Swing Mohammad Iqbal : Slide 40

Contoh JText. Field import javax. swing. *; import java. awt. event. *; import java. awt. *; public class Main implements Action. Listener { private static void create. And. Show. GUI() { Main app=new Main(); // make frame. . JFrame. set. Default. Look. And. Feel. Decorated(true); JFrame frame = new JFrame("I am a JFrame"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_ CLOSE); frame. set. Bounds(20, 300, 120); frame. set. Layout(null); // make a panel JPanel my. Panel = new JPanel(); // make a text field app. text. Field = new JText. Field("Type here", 20); my. Panel. add(app. text. Field); // set up action listener app. text. Field. add. Action. Listener(app); // make and add label app. label = new JLabel("Result"); my. Panel. add(app. label); frame. set. Content. Pane(my. Panel); frame. set. Visible(true); } Java Swing Mohammad Iqbal : Slide 41

Contoh JText. Field public void action. Performed(Action. Event e) { // this happens when Enter hit on the text field label. set. Text(text. Field. get. Text()); } public static void main(String[] args) { // start off. . try { UIManager. set. Look. And. Feel( "javax. swing. plaf. metal. Metal. Look. And. Feel" ); } catch (Exception e) { System. out. println("Cant get laf"); } Swing. Utilities. invoke. Later(new Runnable() { public void run() { create. And. Show. GUI(); } }); } // application object fields JLabel label; JText. Field text. Field; } Java Swing Mohammad Iqbal : Slide 42

JText. Area JPanel my. Panel = new JPanel(); app. text. Area = new JText. Area("Type here", 5, 20); my. Panel. add(app. text. Area); Text. Area expands rows and columns as needed Java Swing Mohammad Iqbal : Slide 43

JScroll. Pane JText. Area text. Area = new JText. Area("Type here", 5, 20); JScroll. Pane scroll. Pane = new JScroll. Pane(text. Area); frame. set. Content. Pane(scroll. Pane); Java Swing Mohammad Iqbal : Slide 44

Latihan • Buat Program • Gunakan select. All dan cut methods dari JText. Component, dengan JText. Area. Java Swing Mohammad Iqbal : Slide 45

Timer. . Timer t = new Timer(1000, app); t. start(); app. label = new JLabel("Time"); app. label. set. Bounds(20, 200, 20); frame. get. Content. Pane(). add(app. label); . . public void action. Performed(Action. Event e) { String now = (new java. util. Date()). to. String(); label. set. Text(now); } Java Swing Mohammad Iqbal : Slide 46

Citra Icon JFrame frame = new JFrame("I am Celsius"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. set. Bounds(20, 30, 200); frame. get. Content. Pane(). set. Layout(null); Image. Icon icon = new Image. Icon("c: /celsius. jpg", "Celsius"); JLabel label = new JLabel(icon); label. set. Bounds(20, 150, 150); frame. get. Content. Pane(). add(label); frame. set. Visible(true); Java Swing Mohammad Iqbal : Slide 47

JScroll. Bar Gunakan : • JScroll. Bar dan JLabel • Constructor argumen • Implementasikan Adjustment. Listener • adjustment. Value. Changed • e. get. Value() Java Swing Mohammad Iqbal : Slide 48

JScroll. Bar import javax. swing. *; import java. awt. event. *; public class Main implements Adjustment. Listener { private static void create. And. Show. GUI() { // make frame. . JFrame frame = new JFrame("JScroll. Bar"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. set. Bounds(20, 30, 200); frame. get. Content. Pane(). set. Layout(null); Main app = new Main(); app. sbar = new JScroll. Bar(java. awt. Adjustable. VERTICAL, 127, 1, 0, 255); app. sbar. set. Bounds(20, 20, 200); app. sbar. add. Adjustment. Listener(app); frame. get. Content. Pane(). add(app. sbar); app. label = new JLabel(); app. label. set. Bounds(50, 20, 100, 20); frame. get. Content. Pane(). add(app. label); frame. set. Visible(true); } public void adjustment. Value. Changed(Adjustment. Event e) { label. set. Text("Value = "+e. get. Value()); } public static void main(String[] args) { // start off. . Swing. Utilities. invoke. Later(new Runnable() { public void run() { create. And. Show. GUI(); } }); } // application object fields JScroll. Bar sbar; JLabel label; } Java Swing Mohammad Iqbal : Slide 49

Latihan • Buat Program • Scroll bars determine the red, green and blue components of the background of the panel Java Swing Mohammad Iqbal : Slide 50

JCheck. Box • lihat source code di word • implementasikan Action. Listener • is. Selected() Java Swing Mohammad Iqbal : Slide 51

Radio. Button • Berada dalam grup – hanya satu yang dipilih per grup • Langkah : – Buat radiobuttons – Buat group – Tambah radiobuttons ke grup – Action. Listener Java Swing Mohammad Iqbal : Slide 52

Radio. Button group border. . JPanel group. Panel = new JPanel(); group. Panel. set. Bounds(10, 100, 60); group. Panel. set. Border(Border. Factory. create. Line. Border(Color. black)); frame. get. Content. Pane(). add(group. Panel); group. Panel. add(app. choice 1); group. Panel. add(app. choice 2); . . Java Swing Mohammad Iqbal : Slide 53

List. Box • Langkah : – Data dibuat dalam array – List box menunjukkan array – List box beada dalam scroll pane – Gunakan my. List. get. Model(). get. Element At(. . lihat source code di fileword Java Swing Mohammad Iqbal : Slide 54

Dual JList. Boxes lihat source code di file word • Jika ingin menambahkan item dalam suatu list • Gunakan Vector bukan array untuk menyimpan data • Metode Cek untuk delete item dan copy ke listbox lainnya. Java Swing Mohammad Iqbal : Slide 55

Layout Manager • Layout manager mengontrol posisi komponen • Komponen mendapatkan ukuran yang tepat 'preferred size' sehingga dapat mencegah perubahan tampilan • . pack() akan mengatur ukuran container sehingga cukup untuk komponen Java Swing Mohammad Iqbal : Slide 56

Some Layout. Managers Dari: Swing tutorial java. sun. com Java Swing Mohammad Iqbal : Slide 57

Flow. Layout JFrame. set. Default. Look. And. Feel. Decorated(true); JFrame frame = new JFrame("Flow. Layout"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. get. Content. Pane(). set. Layout(new Flow. Layout()); JButton b 1 = new JButton("Hello"); frame. get. Content. Pane(). add(b 1); JButton b 2 = new JButton("Two"); frame. get. Content. Pane(). add(b 2); JText. Field t 1 = new JText. Field("Text here"); frame. get. Content. Pane(). add(t 1); frame. pack(); frame. set. Visible(true); Coba program ini coba re-sizing frame saat runtime tambah buttons tambah frame. set. Bounds Remove pack(); Java Swing Mohammad Iqbal : Slide 58

Border. Layout JFrame. set. Default. Look. And. Feel. Decorated(true); JFrame frame = new JFrame("Border"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); JButton b 1 = new JButton("At the top"); frame. get. Content. Pane(). add(b 1, Border. Layout. PAGE_START ); JButton b 2 = new JButton("Bottom"); frame. get. Content. Pane(). add(b 2, Border. Layout. PAGE_END); JText. Field t 1 = new JText. Field("Left"); frame. get. Content. Pane(). add(t 1, Border. Layout. LINE_START); JText. Field t 2 = new JText. Field("Right"); frame. get. Content. Pane(). add(t 2, Border. Layout. LINE_END); JButton b 3 = new JButton("Centre"); frame. get. Content. Pane(). add(b 3, Border. Layout. CENTER ); frame. pack(); frame. set. Visible(true); Coba Program ini Java Swing Mohammad Iqbal : Slide 59

Grid JFrame. set. Default. Look. And. Feel. Decorated(true); JFrame frame = new JFrame("Grid"); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. get. Content. Pane(). set. Layout(new Grid. Layout(4, 3, 5, 5)); for (int i=0; i<10; i++) frame. get. Content. Pane(). add(new JButton(""+i)); frame. pack(); frame. set. Visible(true); Java Swing Mohammad Iqbal : Slide 60

Kombinasi Lay-out lihat source code di word • • • Frame diset null layout Frame memiliki upper dan lower panel Upper panel diset null layout Lower panel diset grid layout Note font of display Java Swing Mohammad Iqbal : Slide 61

Menu JMenu. Bar JMenu. Item Java Swing Mohammad Iqbal : Slide 62

Menu Main app = new Main(); . . JMenu. Bar my. Menu. Bar = new JMenu. Bar(); JMenu menu 1 = new JMenu("File"); JMenu. Item item = new JMenu. Item("Exit"); item. add. Action. Listener(app); menu 1. add(item); my. Menu. Bar. add(menu 1); frame. set. JMenu. Bar(my. Menu. Bar); . . public void action. Performed(Action. Event e) { System. exit(0); } Java Swing Mohammad Iqbal : Slide 63

Menu Options lihat source code di word Latihan Copy gambar ini Tambahkan option kedua yaitu 'Edit' setelah 'File' Masukkan pilihan Undo, Redo, Cut Copy dan Paste di sana Gunakan icon yang tepat jika memungkinkan Java Swing Mohammad Iqbal : Slide 64

JTool. Bar. . frame is Border. Layout. . JTool. Bar tool. Bar = new JTool. Bar("Test"); JButton butt 1 = new JButton(new Image. Icon("icon. gif")); tool. Bar. add(butt 1); . . frame. add(tool. Bar, Border. Layout. PAGE_START); Java Swing Mohammad Iqbal : Slide 65

paint • JComponents memiliki metode paint() • Ini dipanggil sistem ketika dibutuhkan untuk menampilkan obyek • Kita dapat memanfaatkan over-ride paint() untuk mengontrol tampilan (appearance) komponen • Ini akan mempengaruhi komponen sub-classnya • Metode paint memiliki obyek grafik sebagai parameter, seperti color, font dll. • Kita dapat menggunakan obyek grafik untuk menampilkan sesuatu Java Swing Mohammad Iqbal : Slide 66

public class My. Frame extends JFrame { public My. Frame() { super("Some title"); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Bounds(20, 30, 230, 180); my. Panel = new My. Panel(); my. Panel. set. Opaque(true); set. Content. Pane(my. Panel); set. Visible(true); } My. Panel my. Panel; } Contoh public class My. Panel extends JPanel { public void paint(Graphics g) { g. draw. Line(0, 0, get. Width(), get. Height()); g. draw. String("Hello", get. Width()/2, get. Height()/2); } } Java 4 -Graphics Java Swing Mohammad Iqbal : Slide 67
- Slides: 67