MASIGNASUKAv101
4551133496077351792

Cara Membuat Alert Pada JavaFX

Cara Membuat Alert Pada JavaFX
Add Comments
Saturday, 10 June 2017

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.
Cara Membuat Alert Pada JavaFX 1
Gambar 1
Setelah selesai memberi text masing-masing tombol, kini kita buat id pada masing-masing tombol dimana Alert 1 = alertOne, Alert 2 = alertTwo dan Alert 3 = alertThree.
Cara Membuat Alert Pada JavaFX 2
Gambar 2
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 alertOneClickedalertTwoClicked, 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).
Cara Membuat Alert Pada JavaFX 3
Gambar 3
Kemudian pada alertOneClicked kita akan buat Alert informasi, ketikan kode berikut di dalam method.
    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.
Cara Membuat Alert Pada JavaFX 4
Gambar 4
Atau bisa juga menggunakan hearder dalam dialog, cara nya tinggal ubah saja null menjadi sebuah string, perhatikan contohnya dibawah.
    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.
Cara Membuat Alert Pada JavaFX 5
Gambar 5
Contoh selanjutnya adalah membuat Alert untuk peringatan Warning, masih dalam tombol yang sama kita hanya mengganti AlertType nya saja.
    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.
Cara Membuat Alert Pada JavaFX 6
Gambar 6
Terakhir tipe Alert yang sederhana adalah bentuk atau tipe Error, sama seperti warning yang diganti hanya AlertType saja.
    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.
Cara Membuat Alert Pada JavaFX 7
Gambar 7
Kemudian kita beralih ketombol Alert 2 dimana kita akan cobakan membuat Alert konfirmasi, perhatikan contoh kode program berikut.
    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.
Cara Membuat Alert Pada JavaFX 8
Gambar 8
Selain tombol Ok dan Cencel, kita bisa juga membuat beberapa tombol lain tergantung dengan kebutuhan dari program yang di buat. Contoh masih pada Alert 2 kita edit menjadi seperti kode program dibawah.
    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.
Cara Membuat Alert Pada JavaFX 9
Gambar 9
Pada tombol selanjutnya (Alert 3) kita akan coba untuk menampilkan dialog error, didalamnya ada output dari error yang biasanya berguna untuk Exception.
    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.
Cara Membuat Alert Pada JavaFX 10
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.
Cara Membuat Alert Pada JavaFX 11
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;