1. Kompetensi Dasar
a. Memahami persamaan dan perbedaan antara AWT dan Swing
b. Perbedaan antara komponen dan kontainer.
c. Mendesain aplikasi GUI menggunakan AWT.
d. Mendesain aplikasi GUI menggunakan Swing.
e. Menjelaskan tentang flow layout, border layout, dan grid layout dalam komponen GUI
f. Membuat tampilan yang komplek dalam mendesain aplikasi GUI.
2. Teori Dasar
Tanpa mempelajari tentang grapichal user interface (GUI) API, Anda masih tetap bisa
membuat suatu program. Tetapi, program Anda akan kelihatan tidak menarik dan tidak nyaman
digunakan bagi para user. Memiliki GUI yang baik dapat memberi efek pada penggunaan aplikasi.
Java menyediakan banyak tool seperti Abstract Windowing Toolkit dan Swing untuk
mengembangkan aplikasi GUI yang interaktif.
The Java Foundation Class (JFC), merupakan bagian penting dari Java SDK, yang
termasuk dalam koleksi dari API dimana dapat mempermudah pengembangan aplikasi JAVA GUI.
JFC termasuk diantara 5 bagian utama dari API yaitu AWT dan Swing. Tiga bagian yang lainnya
dari API adalah Java2D, Accessibility, dan Drag and Drop. Semua itu membantu developer dalam
mendesain dan mengimplementasikan aplikasi dengan visualisasi yang lebih baik.
AWT dan Swing menyediakan komponen GUI yang dapat digunakan dalam membuat
aplikasi Java dan applet. Anda akan mempelajari applet pada bab berikutnya. Tidak seperti beberapa
komponen AWT yang menggunakan native code, keseluruhan Swing ditulis menggunakan bahasa
pemrograman Java.
Swing menyediakan implementasi platform-independent dimana aplikasi yang
dikembangkan dengan platform yang berbeda dapat memiliki tampilan yang sama. Begitu juga
dengan AWT menjamin tampilan look and feel pada aplikasi yang dijalankan pada dua mesin yang
berbeda menjadi terlihat sama. Swing API dibangun dari beberapa API yang mengimplementasikan
beberapa jenis bagian dari AWT. Kesimpulannya, komponen AWT dapat digunakan bersama
dengan komponen Swing.
3. Praktikum
a. Menampilkan Frame
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public SampleFrame(){
});
}
b. Menampilkan Panel :
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
*
* @author choirulhuda
*/
public class GraphicPanel extends Panel{
public GraphicPanel() {
setBackground(Color.BLACK);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(new Color(0, 255, 0));
g.setFont(new Font("Helvetica",Font.PLAIN,16));
g.drawString("Hello GUI World!", 30, 100);
g.setColor(new Color(1.0f,0,0)); //red
g.fillRect(30, 100, 150, 10);
}
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Choice;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.List;
import java.awt.Scrollbar;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
*
* @author choirulhuda
*/
public class FrameControls extends Frame{
public FrameControls() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
dispose();
}
});
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
*
* @author choirulhuda
*/
public class FlowLayoutDemo extends Frame{
public FlowLayoutDemo() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
dispose();
}
});
setTitle("Flow Layout");
setLocationRelativeTo(null);
}
public static void main(String[] args) {
FlowLayoutDemo fld = new FlowLayoutDemo();
fld.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
fld.add(new Button("ONE"));
fld.add(new Button("TWO"));
fld.add(new Button("THREE"));
fld.setSize(300, 100);
fld.setVisible(true);
}
/**
*
* @author choirulhuda
*/
public class BorderLayoutDemo extends Frame{
public BorderLayoutDemo() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
dispose();
}
});
setTitle("Border Layout");
setLocationRelativeTo(null);
}
}
Hasil Percobaan 5 Output Border Layout Demo :
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
*
* @author choirulhuda
*/
public class GridLayoutDemo extends Frame{
public GridLayoutDemo() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
dispose();
}
});
setTitle("Grid Layout");
setLocationRelativeTo(null);
}
}
Hasil Percobaan 6 output Grid Layout Demo :
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
*
* @author choirulhuda
*/
public class ComplexLayout extends Frame{
public ComplexLayout() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
dispose();
}
});
setTitle("Complex Layout");
setLocationRelativeTo(null);
}
panelCenter.setLayout(new GridLayout(4,4));
panelCenter.add(new TextField("1st"));
panelCenter.add(new TextField("2nd"));
panelCenter.add(new TextField("3rd"));
panelCenter.add(new TextField("4th"));
panelSouth.setLayout(new BorderLayout());
panelSouth.add(new Checkbox("Choose me!"),
BorderLayout.CENTER);
panelSouth.add(new Checkbox("I'm here!"),
BorderLayout.EAST);
panelSouth.add(new Checkbox("Pick me!"),
BorderLayout.WEST);
cl.add(panelNorth, BorderLayout.NORTH);
cl.add(panelCenter, BorderLayout.CENTER);
cl.add(panelSouth, BorderLayout.SOUTH);
cl.setSize(300,300);
cl.setVisible(true);
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
*
* @author choirulhuda
*/
public class SwingDemo {
JFrame frame;
JPanel panel;
JTextField textField;
JButton button;
Container contentPane;
public SwingDemo() {
}
void launchFrame(){
frame = new JFrame("My First Swing");
panel = new JPanel();
textField = new JTextField("Default text");
button = new JButton("Click me!");
contentPane = frame.getContentPane();
panel.add(textField);
panel.add(button);
contentPane.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 100);
frame.setVisible(true);
}
import javax.swing.JOptionPane;
/**
*
* @author choirulhuda
*/
public class JOptionPaneDemo {
JOptionPane optionPane;
public JOptionPaneDemo() {
}
void launchFrame() {
optionPane = new JOptionPane();
String name = optionPane.showInputDialog("Hi, what's yourname?");
optionPane.showMessageDialog(null, "Nice to meet you, " + name + ".",
"Greeting...", optionPane.PLAIN_MESSAGE);
System.exit(0);
}