Pembukaan
Sebuah kotak dialog peringatan merupakan hal yang penting, kenapa penting? hal ini menyangkut dengan keamanan dari aplikasi itu sendiri. Jika transaksi pada sebuah aplikasi langsng tereksekusi tanpa adanya perintah persetujuan maka ini tidak aman. Sebagai contoh apabila seorang user salah menekan tombol (ex. tombol hapus) maka transaksi akan tereksekusi dan tidak ada pembatalan yang dilakukan. Bayangkan saja jika yang terhapus adalah data perusahaan yang sangat penting dan bernilai milyaran. Dengan adanya dialog peringatan maka ini sangat memungkinkan untuk mengurangi kesalahan pada user yang bersifat merugikan. Alert merupakan pilihan utama yang disediakan oleh JavaFX, alert adalah dialog peringatan ataupun informasi yang bsia ditampilkan sebelum mengeksekusi suatu perintah. Pada java swing ada yang namananya JOptionPane yang fungsinya juga sama dengan Alert. Alert di JavaFX hanya bisa berjalan pada versi java 8.09 keatas, sehingga seperti saran saya sebelumnya harus menggunakan minimal 8.11.
Pembahasan
Dalam tutorial kali ini kita akan membuat beberapa tombol peringatan (Alert), masih pada file tutorial yang sama dengan sebelumnya. Silahkan kita buka file interface_home.fxml terlebih dahulu dengan Scene Builder, jika sudah tambahkan beberapa Button atau anda bisa hanya menambah satu Button saja. Saya ingatkan komponen Button adalah termasuk dari komponen Controls, perhatikan contoh pada gambar dengan masing-masing tombol memiliki text Alert 1, Alert 2 dan Alert 3.
Gambar 1 |
Sebelum mengeksekusi program, kita lebih baik mengatur perintah input seperti apa yang dapat menjalankan program. Sama halnya pada menu kita bisa menggunakan On Mouse Clicked atau bisa juga On Action, keduanya sama saja menggunakan inputan mouse clicked. Silahkan kita gunakan saja On Mouse Clicked dengan masing-masing nama alertOneClicked, alertTwoClicked, dan alertThreeClicked.
Setelah masing-masing dibuat, "JANGAN LUPA UNTUK MENYIMPAN PERUBAHAN" dan scene builder bisa di close. Masih pada file yang sama yaitu interface_home.fxml, buat atau generate controller pada file tersebut (gambar dibawah hasil generate).
Gambar 3 |
private void alertOneClicked(MouseEvent event) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Ini Title Alert");
alert.setHeaderText(null);
alert.setContentText("Ini isi dari alert informasinya!\n\nwww.java-sc.com");
alert.showAndWait();
}
Hasilnya akan seperti gambar berikut dibawah ini.
Gambar 4 |
private void alertOneClicked(MouseEvent event) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Ini Title Alert");
alert.setHeaderText("Ini Header Dari Alert");
alert.setContentText("Ini isi dari alert informasinya!\n\nwww.java-sc.com");
alert.showAndWait();
}
Dapat dilihat hasilnya pada gambar berikut, dimana jika null header tidak akan ditampilkan pada Alert.Gambar 5 |
private void alertOneClicked(MouseEvent event) {
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("Ini Title Alert");
alert.setHeaderText("Ini Header Dari Alert");
alert.setContentText("Ini isi dari alert informasinya!\n\nwww.java-sc.com");
alert.showAndWait();
}
Gambar dibawah adalah hasilnya.Gambar 6 |
private void alertOneClicked(MouseEvent event) {
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Ini Title Alert");
alert.setHeaderText("Ini Header Dari Alert");
alert.setContentText("Ini isi dari alert informasinya!\n\nwww.java-sc.com");
alert.showAndWait();
}
Sebenarnya yang berubah adalah icon yang menyimbolkan masing-masing tipe Alert, lihat saja tipe error dengan icon tanda Silang Merah.Gambar 7 |
private void alertTwoClicked(MouseEvent event) {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Apakah anda akan keluar?");
alert.setHeaderText(null);
alert.setContentText("Tekan OK untuk keluar tekan Cencel Untuk batal");
Optional result = alert.showAndWait();
if (result.get() == ButtonType.OK){
Alert keluar = new Alert(AlertType.ERROR);
keluar.setTitle("www.java-sc.com");
keluar.setHeaderText(null);
keluar.setContentText("YEEEEY KAMU PENCET TOMBOL OK!!!");
keluar.showAndWait();
} else {
alert.close();
}
}
Kode diatas akan menampilkan seperti gambar dibawah, jadi jika tombol OK di tekan akan menampilkan Alert dengan tipe Error dan jika tekan Cencel Alert konfirmasi akan keluar.Gambar 8 |
private void alertTwoClicked(MouseEvent event) {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("WWW.JAVA-SC.COM");
alert.setHeaderText("ini Tombol Pilihan Cinta :v ");
alert.setContentText("Mau Pilih Tombol Yang Mana? Hayoooo.....");
ButtonType tombol1 = new ButtonType("Cinta 1");
ButtonType tombol2 = new ButtonType("Cinta 2");
ButtonType tombol3 = new ButtonType("Cinta 3");
ButtonType tombol4 = new ButtonType("Cinta 4");
ButtonType tombol5 = new ButtonType("Batal Aja");
alert.getButtonTypes().setAll(tombol1, tombol2, tombol3, tombol4,tombol5);
Optional result = alert.showAndWait();
if (result.get() == tombol1) {
Alert pilihansatu = new Alert(AlertType.INFORMATION);
pilihansatu.setTitle("Kamu Pilih Saya");
pilihansatu.setHeaderText(null);
pilihansatu.setContentText("ini jika pilih no 1!\n\nwww.java-sc.com");
pilihansatu.showAndWait();
}
else if (result.get() == tombol2){
Alert pilihandua = new Alert(AlertType.WARNING);
pilihandua.setTitle("Kamu Pilih Saya");
pilihandua.setHeaderText(null);
pilihandua.setContentText("ini jika pilih no 2!\n\nwww.java-sc.com");
pilihandua.showAndWait();
}
else if (result.get() == tombol3){
Alert pilihantiga = new Alert(AlertType.ERROR);
pilihantiga.setTitle("Kamu Pilih Saya");
pilihantiga.setHeaderText(null);
pilihantiga.setContentText("ini jika pilih no 3!\n\nwww.java-sc.com");
pilihantiga.showAndWait();
}
else if (result.get() == tombol4){
Alert pilihanempat = new Alert(AlertType.INFORMATION);
pilihanempat.setTitle("Kamu Pilih Saya");
pilihanempat.setHeaderText(null);
pilihanempat.setContentText("ini jika pilih no 4!\n\nwww.java-sc.com");
pilihanempat.show();
}
else {
alert.close();
}
}
Hasilnya terlihat pada gambar dibawah ini, dengan 5 tombol yang berbeda.Gambar 9 |
private void alertThreeClicked(MouseEvent event) {
try {
int array[] = {1,2};
System.out.println(array[4]);
} catch (Exception e) {
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Error Exception");
alert.setHeaderText("Apa ini header ?");
TextArea area = new TextArea("Ini Error Array"+e.toString()+"\n\nwww.java-sc.com");
area.setEditable(false);
area.setWrapText(true);
area.setMaxWidth(Double.MAX_VALUE);
area.setMaxHeight(Double.MAX_VALUE);
GridPane.setVgrow(area, Priority.ALWAYS);
GridPane.setHgrow(area, Priority.ALWAYS);
GridPane pane = new GridPane();
pane.setMaxWidth(Double.MAX_VALUE);
pane.add(area, 0, 0);
alert.getDialogPane().setExpandableContent(pane);
alert.showAndWait();
}
}
Untuk kode diatas bisa dilihat pada gambar dibawah.Gambar 10 |
Penutup
Hasil akhir dari seluruh kode program yang sudah kita buat di tampilkan pada gambar dibawah, sebenarnya untuk Alert ini alangkah baiknya kita buat dalam suatu class yang menyimpan seluruh fungsi. Kenapa? karena jika alert digunakan berkali-kali maka syntax program yang di ketikan akan begitu panjang.Gambar 11 |
Berikut adalah daftar library yang digunakan dalam pembuatan Alert.
import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
0 Komentar
Keep Learning and Keep Sharing