Menekan “Enter” untuk Tombol pada Aplikasi Java GUI

Banyak cara yang bisa dilakukan jika ingin membuat aplikasi GUI menggunakan bahasa pemrograman java. Terutama kalo mau ngegunain swing. Banyak banget caranya. Bahkan dari segi tampilan ama layouting, bervariasi hal-hal yang bisa dilakukan sampe gui-nya sesuai ama selera end-user.

Tapi kadang ketidakpuasan sukak didapat karena pas mau eksekusi halaman, caranya gak sesimpel nekan tombol “Enter”. Gak simple kayak yang di aplikasi web gitu. Isi semua field yang dibutuhkan, bisa pindah ke teks field yang mau diisi pake “tab”, terus tinggal tekan “Enter”. Abis nekan enter di keyboard, halaman pun akan dieksekusi. Gak musti pindah gerakan tangan dari keyboard ke mouse, cuma buat nge-klik tombol yang ada. Intinya gak perlu tukar2 input device dari keybord ke mouse atau sebaliknya. Hee?? Apaaah?! Kamu dari awal juga gak perlu pindah2 karena kompi-nya udah touchscreen?! Owh, save your time for being so arrogant, Pal! Pegi gih jauh2. Gw gak nerima lo. Yang cuma boleh nyombong di tempat gw ya cuma gw doank. Gak boleh yang lain.

Jadi kalo di java, defaultnya, tombol tuh musti dikasi aksi dulu biar bisa jalan. Aksi apapun. Bisa mouse, bisa keyboard, bisa lain2. Atau kalopun bisa ditekan tanpa mouse, tombolnya musti kepilih dulu. Gini nih contoh gambarnya… buat tombol yang gak kepilih (ini default-nya pas abis di-run):

1. Formulir Biodata Unselected

Trus ini gambar dari tombol yang udah kepilih abis nekan tab beberapa kali setelah di-run:

2. Formulir Biodata Selected

Ada semacam border kecil gitu di sekeliling kata yang tercantum di tombol. Dan ini pun statusnya masi belum bisa pencet “Enter”. Musti kasi dulu listener dari interface “KeyListener”. Terus baru dah kasi blok logika kalo mencet karakter “Enter”, si aplikasi bisa ngapain ajah.

Tapi~~~ terkait hal ini… Mungkin ada kalanya lo males make interface “KeyListener” dan nyari cara gampang buat ngaktifin tombol bahkan sejak aplikasi gui dijalanin. Trus bertanya2, ngerasa resah dan gelisah untuk mencari jawaban dari hal yang sebenernya agak2 gak penting itu. Tapi untuk itulah gw di sini buat menghilangkan keresahan kamu tentangnya. Yang namanya arby kan savior buat orang2 yang mempertanyakan hal2 gak penting. Hihihihi :p

Jadi sebenernya kalo emang mau jadiin default aksi kalo pencet “Enter” ngerujuk ke sebuah tombol, lo bisa ambil root pane dari top level container yang dipake (bisa JFrame ataupun Applet), terus pakelah method setDefaultButton().

frame.getRootPane().setDefaultButton(tombol);

Varibel “tombol” sendiri merupakan objek dari JButton yang pengen lo jadiin sebagai default button nantinya. Jadi nanti kira2 pas dijalanin pertama kali, button bakal kebentuk gini:

3. Formulir Biodata Default Selected

Lihat kan bedanya?! Ada shadow gitu di sekeliling tombol-nya. Sejak dijalanin pertama kali, tombol ini udah bisa diaktifin pake nekan “Enter”. Tinggal nambahin listener ajah buat si tombol.

Method getRootPane sendiri maxutnya buat ngambil root pane dari top-level container. Dari root pane inilah segala macam komponen bisa diatur. Biasanya yang diatur di sini itu peletakan pane, semacam contentPane, glassPane, ataupun layeredPane. Lebih jelasnya c, liat di situs oracle ajah bagian root pane sama top level container.

Berikut gw tampilin contoh class yang gw bikin (Biodata.java).
Buat listener-nya, gw pake interface “ActionListener”.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 *
 * @author Arby
 */
public class Biodata implements ActionListener{
    private JTextField teksNama, teksUmur;
    private JLabel labelNama, labelUmur;
    private JButton tombol;
    private JPanel panel;

    private JPanel isiKomponen(){
        //ciptakan panel
        panel = new JPanel();
        //ciptakan komponen label & teks field serta tombol;
        teksNama = new JTextField(10); 
        teksUmur = new JTextField(10);
        labelNama = new JLabel("Nama: ");
        labelUmur = new JLabel("Umur: ");
        tombol = new JButton("Proses");

        //berikan aksi ke tombol
        tombol.addActionListener(this);
        tombol.setActionCommand("Eksekusi");

        //masukkan komponen ke panel
        panel.add(labelNama); panel.add(teksNama);
        panel.add(labelUmur); panel.add(teksUmur);
        panel.add(tombol);

        return panel;
    }

    public Biodata(String nama){
        //bentuk objek frame,
        //atur posisi muncul di x = 500 (jarak dari kiri layar); 
        //y = 300 (jarak dari atas layar);
        JFrame frame = new JFrame(nama);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocation(500, 300);

        //isi frame dengan panel
        frame.setContentPane(this.isiKomponen());
        frame.pack();

        //tentukan tombol default
        frame.getRootPane().setDefaultButton(tombol);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Eksekusi")){
            //ambil value nama dan umur;
            //masukkan ke string yang akan ditampilkan di option pane
            String pesan = "Nama: "+teksNama.getText()+"\n"
                          +"Umur: "+teksUmur.getText();

            //tampilkan ke Option Pane
            JOptionPane.showMessageDialog(null, pesan, "Isi Biodata",
                                          JOptionPane.INFORMATION_MESSAGE);
        }
    }}

Buat jalaninnya pake kelas ini (Main.java):

/**
 *
 * @author Arby
 */
public class Main {
    public static void main(String[] args) {
        Biodata b = new Biodata("Formulir Biodata");
    }
}

Sumber: Stackoverflow
Valid: unknown
Masa kadaluarsa: sampe method getRootPane & setDefaultButton dinyatakan obsolete ama java-nya.

Advertisements

One thought on “Menekan “Enter” untuk Tombol pada Aplikasi Java GUI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s