Skip to content

Commit

Permalink
feat: Menambahkan Java GUI (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
dean-fahreza authored Dec 1, 2021
1 parent 7bc6415 commit 444d275
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 0 deletions.
18 changes: 18 additions & 0 deletions learn/advanced/Java-GUI/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# JAVA GUI
Pada materi kali ini akan membahas Java GUI. Ngomong-ngomong, sebelum membahas GUI apa sih itu GUI?? GUI (Graphical User Interface) merupakan sistem komponen visual interaktif untuk software komputer. Menurut Computer Hope, GUI menampilkan objek yang bisa menyampaikan informasi dan merepresentasikan aksi dari pengguna. Dengan adanya GUI, kita bisa mengetahui bahwa apa yang kita input telah diterima dan responsnya ditunjukkan secara visual. GUI bisa terlihat dari perubahan warna, ukuran, visibilitas, dan sejenisnya ketika terjadi sebuah interaksi.Java

### Jenis-jenis Java GUI
1. AWT (Abstract Window Toolkit)
AWT adalah GUI Toolkit pertama pada bahasa pemrograman Java, sayang-nya AWT ini sangat-sangat kekurangan komponen yang biasa digunakan untuk membangun sebuah aplikasi desktop secara lengkap (komponen tabel saja tidak ada ). 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.

2. Java Swing
Toolkit dalam Pemrograman GUI di Java yang 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. Terdapat 2 IDE besar yang menggunakan GUI Toolkit Java Swing yaitu NetBeans IDE(OpenSource) dan IntelliJ IDEA (mempunyai versi OpenSource dan Komersial). Dibandingkan dengan AWT, Swing mempunyai lebih banyak komponen pendukung untuk membangun sebuah aplikasi yang lengkap untuk keperluan desktop. 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. 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.

3. SWT (Standart Widget Tookit)
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 lain-nya. Kekurangan dari model pemanggilan native GUI library seperti ini adalah kita harus menyediakan library untuk tiap-tiap Sistem Operasi target aplikasi kita.

Penasarankan *source_code* dari setiap-setiap Java GUI? Jika penasaran langsung klik saja Folder yang ada dibawah ini

1. [AWT](https://image.freepik.com/free-vector/abstract-grunge-style-coming-soon-with-black-splatter_1017-26690.jpg)
2. [Swing](learn/advance/Java-GUI/Swing/)
3. [SWT](https://image.freepik.com/free-vector/abstract-grunge-style-coming-soon-with-black-splatter_1017-26690.jpg)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import javax.swing.*; // mengimport Package Swing yang merupakan Toolkit standart Java GUI

public class MembuatGUISendiri { // mendeklarasikan class, pastikan nama class sesuai dengan source_code
public static void main(String[] args) { // mendeklarasikan method void
SwingUtilities.invokeLater(new Runnable() { // utilities dari Java Swing yang biasanya digunakan untuk menjakanj=
public void run() { // methood void yang biasanya dideklarasikan untuk menjalankan dari sebuah variabel
createAndShowGUI(); // mendeklarasikan variabel yang dimana akan digunakan untuk
}
});
}
private static void createAndShowGUI() { // mendeklarasikan method void private yang dimana akan digunakan untuk membuat GUI Java
JFrame frame = new JFrame("Ini adalah title dari JPanel"); //JFrame adalah Subclass dari JPanel yang memiliki fungsi sama dengan JPanel
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // dari variabel fram pada JFrame yang mendeklarasikan
JLabel label = new JLabel("Hello World"); // menambahkan label pada panel GUI Java. Label ini juga bisa menuliskan sebuah output dengan tipe data "String".
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import javax.swing.*;
import java.awt.*;

public class ContohPanel {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

private static void createAndShowGUI() {
JFrame frame = new JFrame("gambar di bawah adalah gambar warna COKLAT !!!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20, 30, 300, 100);
frame.setLayout(null);

JPanel panel = new JPanel();
panel.setBackground(new Color(150, 75, 0));
panel.setOpaque(true);

frame.setContentPane(panel);
frame.setVisible(true);
}
}
20 changes: 20 additions & 0 deletions learn/advanced/Java-GUI/Swing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# SWING
Pada materi ini berisikan tentang apa-apa saja yang ada di Swing Java ini. Ngomgong-ngomong sebelum terjun ke programnya secara langsung, apa sih **Java Swing** ini??

Swing adalah sebuah GUI Toolkit dalam Java. Toolkit ini adalah bentuk _standard_ dari Java sehingga tidak perlu melakukan penambahan library lagi kalau ingin menggunakan GUI Toolkit ini. Dibandingkan dengan Toolkit lain, Swing mempunyai lebih banyak komponen pendukung untuk membangun sebuah aplikasi yang lengkap untuk keperluan desktop. 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.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.

### Komponen-Komponen Swing
1. JPanel
JPanel adalah salah satu komponen swing pertama dan dasar dikarenakan JPanel ini lah adalah hasil GUI yang nanti akan dikeluarkan. JPanel memiliki komponen-komponen cabang antara lain JLabel, JButton, JList dan lain-lain yanng berada di bawah ini.

2. JLabel
JLabel adalah JLabel merupakan komponen yang digunakan untuk menampilkan teks yang pendek. JLabel juga digunakan untuk menampilkan icon (gambar berukuran kecil) atau menampilkan icon dan teks. JLabel merupakan sub kelas dari JFrame

3. JButton
JButton berguna untuk membuat objek tombol yg dapat dilengkapi dengan judul tombol maupun ikon.

4. JCheckbox
JCheckBox digunakan untuk memilih salah satu pilihan di antara dua kemungkinan.

5. JRadioButton
JRadioButton digunakan untuk menampilkan pilihan yang dimana terdapat ButtonGroup digunakan untuk membuat pemakai hanya bisa memilih salah satu dari sejumlah tombol radio.

0 comments on commit 444d275

Please sign in to comment.