mohiqbal Java Swing.

Download Report

Transcript mohiqbal Java Swing.

Java Swing
Mohammad Iqbal
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 sangatsangat 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 NetBeans IDE(OpenSource)
dan IntelliJ IDEA (mempunyai versi OpenSource 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)
2D 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.
QtJambi – 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 QtJambi adalah pilihan yang tepat.
Karena QtJambi ini merupakan binding Qt Framework dengan bahasa Java, tetapi sayang-nya proyek
QtJambi 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 QtJambi, sekarang teman-teman bisa melihat
perkembangan proyek QtJambi ini pada halaman QtJambi Community
JavaGNOME – Community Product
•
Kalau QtJambi diatas ditujukan untuk teman-teman yang sudah akrab dengan API (Application
Programming Interface) Qt Framework, berbeda dengan JavaGNOME Proyek ini lebih dikhususkan
untuk teman-teman pecinta GTK atau yang paling banyak dikenal yaitu GNOMESama seperti GUI Toolkit
SWT dan QTJambi, JavaGNOME 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 JavaGNOME
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 Java2
•
•
•
•
•
•
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/j2se/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.setText(“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
GUI
Internal structure
JFrame
JFrame
JPanel
containers
JPanel
JButton
JButton
JLabel
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.setContentPane(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[] args){
JFrame f = new JFrame(“title”);
JPanel p = new JPanel();
JButton b = new JButton(“press me”);
p.add(b);
f.setContentPane(p);
// add button to panel
// add panel to frame
f.show();
}
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) {
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI(); // << methode untuk
memulai Swing
}
});
}
Java Swing Mohammad Iqbal : Slide 15
createAndShowGUI
private static void createAndShowGUI()
{
//Create and set up the window.
JFrame frame = new JFrame("Hi..");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add a label.
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
//Display the window.
frame.pack();
frame.setVisible(true);
}
Silahkan coba
Kode ini !
Java Swing Mohammad Iqbal : Slide 16
Layout Manager
• Swing UI menggunakan
LayoutManager untuk mengontrol
posisi item
• Ini adalah pilihan untuk dapat bekerja
dalam cara yang berbeda tapi lebih
mudah :
– frame.setLayout(null);
Java Swing Mohammad Iqbal : Slide 17
Posisi Absolut
JFrame frame = new JFrame("I am a JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,30,300,100);
frame.setLayout(null);
JButton butt=new JButton("Click me");
frame.getContentPane().add(butt);
butt.setBounds(20, 20, 200,20);
frame.setVisible(true);
Silahkan coba Kode ini !
- Mulai dengan contoh sebelumnya
dan tulis kode ini di bagian
CreateandShowGUI()
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:
ActionListener
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: actionPerformed
Java Swing Mohammad Iqbal : Slide 20
Interface
• Interface adalah kumpulan methods
• Misalnya : interface ActionListener memiliki
satu method –
public void actionPerformed(ActionEvent e)
• Class dapat mendeklarasikan method ini
sebagai implements, misalnya :
public class Main implements ActionListener
• 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
clickCounts akan mengingat jumlah klik
Class implements ActionListener
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 ActionListener {
private static void createAndShowGUI() {
// make frame..
JFrame frame = new JFrame("I am a JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON
_CLOSE);
frame.setBounds(20,30,300,100);
frame.getContentPane().setLayout(null);
// make a button
JButton butt=new JButton("Click me");
frame.getContentPane().add(butt);
butt.setBounds(20, 20, 200,20);
// instantiate an application object
Main app = new Main();
// make the label
app.label = new JLabel("0 clicks");
app.label.setBounds(20,40, 200,20);
frame.getContentPane().add(app.label);
// set the application object to be the
thing which
// listens to the button
butt.addActionListener(app);
frame.setVisible(true);
}
Java Swing Mohammad Iqbal : Slide 23
Demo klik Button
public void actionPerformed(ActionEvent e)
{
// Ini akan dieksekusi ketika button diklik
clickCount++;
label.setText("Clicks = "+clickCount);
}
public static void main(String[] args) {
// Memulai Swing GUI
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
// application object fields
int clickCount=0;
JLabel label;
}
Java Swing Mohammad Iqbal : Slide 24
Button yang mana yang diklik?
• Jika menggunakan banyak button, setiap
button harus me-link ke actionPerformed
• Bagaimana mengetahui button yang mana
yang diklik?
• Gunakan method .getSource pada obyek
ActionEvent
Java Swing Mohammad Iqbal : Slide 25
Contoh mendeteksi button yang
diklik
butt1=new JButton("Button 1");
..
butt2 = new JButton("Button 2");
..
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==butt1)
label.setText("Butt1 clicked");
else
Silahkan coba Kode ini !
label.setText("Butt2 clicked");
}
Java Swing Mohammad Iqbal : Slide 26
Perhatikan dan Rasakan
Look and Feel (LaF)
CDE/Motif
Windows
Metal
Quaqua
JTatto
Tampilan ini tergantung pada implementasi library
LaF, Contoh library lain untuk melakukan make over
tampilan aplikasi yang menggunakan bahasa
pemrograman java : Substance, Quaqua, JTatto,
serta MacWidgets.
Baca di : http://blog.fastncheap.com/look-feel-java-swing/#ixzz1xqVFSgC0
Java Swing Mohammad Iqbal : Slide 27
Setting LaF (Look and Feel)
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.motif.MotifLookAndFeel" );
}
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 LaF yang terinstall
dalam Sistem
Object a[]= UIManager.getInstalledLookAndFeels();
for (int i=0; i<a.length; i++)
System.out.println(a[i]);
Java Swing Mohammad Iqbal : Slide 29
Dekorasi Frame
JFrame.setDefaultLookAndFeelDecorated(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 createAndShowGUI)
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("I am a JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,30,300,100);
frame.setLayout(null);
//Create a panel
JPanel myPanel = new JPanel();
myPanel.setBackground(new Color(255,3,25));
myPanel.setOpaque(true);
//Make it the content panel
frame.setContentPane(myPanel);
frame.setVisible(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
..
myPanel.setOpaque(true);
myPanel.setToolTipText("I'm a JPanel");
myPanel.setBorder(BorderFactory.createLineBorder(Color.white));
frame.setContentPane(myPanel);
..
Java Swing Mohammad Iqbal : Slide 35
JSplitPane
..
setLayout(null);
//Create a split pane
JSplitPane myPane = new JSplitPane();
myPane.setOpaque(true);
frame.setContentPane(myPane);
frame.setVisible(true);
Java Swing Mohammad Iqbal : Slide 36
JSplitPane menggunakan JPanels
//Create a split pane
JSplitPane myPane = new JSplitPane();
myPane.setOpaque(true);
myPane.setDividerLocation(150);
// make two panels
JPanel right = new JPanel();
right.setBackground(new Color(255,0,0));
JPanel left = new JPanel();
left.setBackground(new Color(0,255,0));
// set as left and right in split
myPane.setRightComponent(right);
myPane.setLeftComponent(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
JTextField
• Untuk satu baris input teks
• Methods : getText, setText
• Dapat menggunakan ActionListener, yang
dipicu ketika tombol Enter ditekan
Java Swing Mohammad Iqbal : Slide 39
Contoh JTextField
•
•
•
•
•
•
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 actionPerformed
Java Swing Mohammad Iqbal : Slide 40
Contoh JTextField
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Main implements ActionListener {
private static void createAndShowGUI() {
Main app=new Main();
// make frame..
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("I am a JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON
_CLOSE);
frame.setBounds(20,30,300,120);
frame.setLayout(null);
// make a panel
JPanel myPanel = new JPanel();
// make a text field
app.textField = new JTextField("Type
here",20);
myPanel.add(app.textField);
// set up action listener
app.textField.addActionListener(app);
// make and add label
app.label = new JLabel("Result");
myPanel.add(app.label);
frame.setContentPane(myPanel);
frame.setVisible(true);
}
Java Swing Mohammad Iqbal : Slide 41
Contoh JTextField
public void actionPerformed(ActionEvent e)
{
// this happens when Enter hit on the text field
label.setText(textField.getText());
}
public static void main(String[] args) {
// start off..
try {
UIManager.setLookAndFeel(
"javax.swing.plaf.metal.MetalLookAndFeel"
);
}
catch (Exception e)
{
System.out.println("Cant get laf");
}
SwingUtilities.invokeLater(new
Runnable() {
public void run() {
createAndShowGUI();
}
});
}
// application object fields
JLabel label;
JTextField textField;
}
Java Swing Mohammad Iqbal : Slide 42
JTextArea
JPanel myPanel = new JPanel();
app.textArea = new JTextArea("Type here",5, 20);
myPanel.add(app.textArea);
TextArea expands rows and columns as needed
Java Swing Mohammad Iqbal : Slide 43
JScrollPane
JTextArea textArea = new JTextArea("Type here",5, 20);
JScrollPane scrollPane = new JScrollPane(textArea);
frame.setContentPane(scrollPane);
Java Swing Mohammad Iqbal : Slide 44
Latihan
• Buat Program
• Gunakan selectAll dan cut methods dari
JTextComponent, dengan JTextArea.
Java Swing Mohammad Iqbal : Slide 45
Timer
..
Timer t = new Timer(1000, app);
t.start();
app.label = new JLabel("Time");
app.label.setBounds(20,20,200,20);
frame.getContentPane().add(app.label);
..
public void actionPerformed(ActionEvent e)
{
String now = (new java.util.Date()).toString();
label.setText(now);
}
Java Swing Mohammad Iqbal : Slide 46
Citra Icon
JFrame frame = new JFrame("I am Celsius");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,30,200,200);
frame.getContentPane().setLayout(null);
ImageIcon icon = new ImageIcon("c:/celsius.jpg", "Celsius");
JLabel label = new JLabel(icon);
label.setBounds(20,20,150,150);
frame.getContentPane().add(label);
frame.setVisible(true);
Java Swing Mohammad Iqbal : Slide 47
JScrollBar
Gunakan :
• JScrollBar dan JLabel
• Constructor argumen
• Implementasikan
AdjustmentListener
• adjustmentValueChanged
• e.getValue()
Java Swing Mohammad Iqbal : Slide 48
JScrollBar
import javax.swing.*;
import java.awt.event.*;
public class Main implements AdjustmentListener {
private static void createAndShowGUI() {
// make frame..
JFrame frame = new JFrame("JScrollBar");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,30,200,200);
frame.getContentPane().setLayout(null);
Main app = new Main();
app.sbar = new JScrollBar(java.awt.Adjustable.VERTICAL, 127, 1,0,255);
app.sbar.setBounds(20,20, 20, 200);
app.sbar.addAdjustmentListener(app);
frame.getContentPane().add(app.sbar);
app.label = new JLabel();
app.label.setBounds(50,20,100,20);
frame.getContentPane().add(app.label);
frame.setVisible(true);
}
public void adjustmentValueChanged(AdjustmentEvent e)
{
label.setText("Value = "+e.getValue());
}
public static void main(String[] args) {
// start off..
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
// application object fields
JScrollBar 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
JCheckBox
• lihat source code di word
• implementasikan ActionListener
• isSelected()
Java Swing Mohammad Iqbal : Slide 51
RadioButton
• Berada dalam grup – hanya satu yang
dipilih per grup
• Langkah :
– Buat radiobuttons
– Buat group
– Tambah radiobuttons ke grup
– ActionListener
Java Swing Mohammad Iqbal : Slide 52
RadioButton group border
..
JPanel groupPanel = new JPanel();
groupPanel.setBounds(10,10,100,60);
groupPanel.setBorder(BorderFactory.createLineBorder(Color.b
lack));
frame.getContentPane().add(groupPanel);
groupPanel.add(app.choice1);
groupPanel.add(app.choice2);
..
Java Swing Mohammad Iqbal : Slide 53
ListBox
• Langkah :
– Data dibuat dalam array
– List box menunjukkan array
– List box beada dalam scroll
pane
– Gunakan
myList.getModel().getElemen
tAt(..
lihat source code di fileword
Java Swing Mohammad Iqbal : Slide 54
Dual JListBoxes
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 LayoutManagers
Dari: Swing tutorial
java.sun.com
Java Swing Mohammad Iqbal : Slide 57
FlowLayout
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("FlowLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout());
JButton b1 = new JButton("Hello");
frame.getContentPane().add(b1);
JButton b2 = new JButton("Two");
frame.getContentPane().add(b2);
JTextField t1 = new JTextField("Text here");
frame.getContentPane().add(t1);
frame.pack();
frame.setVisible(true);
Coba program ini
coba re-sizing frame saat runtime
tambah buttons
tambah frame.setBounds
Remove pack();
Java Swing Mohammad Iqbal : Slide 58
BorderLayout
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Border");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b1 = new JButton("At the top");
frame.getContentPane().add(b1,BorderLayout.PAGE_START );
JButton b2 = new JButton("Bottom");
frame.getContentPane().add(b2,BorderLayout.PAGE_END);
JTextField t1 = new JTextField("Left");
frame.getContentPane().add(t1,BorderLayout.LINE_START);
JTextField t2 = new JTextField("Right");
frame.getContentPane().add(t2,BorderLayout.LINE_END);
JButton b3 = new JButton("Centre");
frame.getContentPane().add(b3,BorderLayout.CENTER );
frame.pack();
frame.setVisible(true);
Coba Program ini
Java Swing Mohammad Iqbal : Slide 59
Grid
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Grid");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new GridLayout(4,3,5,5));
for (int i=0; i<10; i++)
frame.getContentPane().add(new JButton(""+i));
frame.pack();
frame.setVisible(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
JMenuBar
JMenu
JMenuItem
Java Swing Mohammad Iqbal : Slide 62
Menu
Main app = new Main();
..
JMenuBar myMenuBar = new JMenuBar();
JMenu menu1 = new JMenu("File");
JMenuItem item = new JMenuItem("Exit");
item.addActionListener(app);
menu1.add(item);
myMenuBar.add(menu1);
frame.setJMenuBar(myMenuBar);
..
public void actionPerformed(ActionEvent 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
JToolBar
..
.. frame is BorderLayout
..
JToolBar toolBar = new JToolBar("Test");
JButton butt1 = new JButton(new ImageIcon("icon.gif"));
toolBar.add(butt1);
..
frame.add(toolBar, BorderLayout.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 MyFrame extends JFrame
{
public MyFrame()
{
super("Some title");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(20,30,230,180);
myPanel = new MyPanel();
myPanel.setOpaque(true);
setContentPane(myPanel);
setVisible(true);
}
MyPanel myPanel;
}
Contoh
public class MyPanel extends JPanel
{
public void paint(Graphics g)
{
g.drawLine(0,0,getWidth(),getHeight());
g.drawString("Hello",getWidth()/2,getHeight()/2);
}
}
Java4-Graphics
Java Swing Mohammad Iqbal : Slide 67