author

Pemrograman Java Swing: Membuat Jendela dengan JFrame


Belajar Java Swing

Jendela merupakan komponen utama sebuah aplikasi GUI.

Di dalam jendela kita memasukan berbagai macam komponen seperti tombol, teks, combobox, dan lain-lain.

Jendela pada pemrograman Swing dapat kita buat dengan Class JFrame.

Pada kesempatan ini, kita akan belajar cara membuat jendela dengan dua metode:

  1. Hard Coding
  2. Drag and drop

Mari kita mulai…

Membuat Proyek Baru

Sebelum kita mulai mulai membuat jendela, buatlah proyek baru pada Netbeans.

Membuat proyek aplikasi Java

Isi nama proyeknya dengan BelajarSwing dan jangan centang “Create Main Class”.

Memberikan nama proyek Java

Setelah itu, buat sebuah package baru.

Membuat package baru

Isi nama package-nya dengan jendela.

Memberikan nama package

Membuat Jendela JFrame dengan Hard Coding

Hard Coding adalah teknik membuat jendela JFrame dengan menuliskan langsung kode Java untuk membuat Jendela.

Jendela dibuat dengan objek JFrame, lalu disesuaikan atribut-atributnya.

Untuk lebih jelasnya, mari kita praktek langsung…

Buat sebuah class baru di dalam package jendela dengan nama FirstWindow.java, setelah itu buat kodenya seperti ini:

import javax.swing.JFrame;

public class FirstWindow {
    
    public static void main(String[] args) {
        
        // membuat objek jendela
        JFrame myWindow = new JFrame();
        
        // berikan judul pada jendela
        myWindow.setTitle("Jendela Program");
        
        // tentukan ukuran jendela
        myWindow.setSize(400, 200);
        
        // tampilkan jendela ke layar
        myWindow.setVisible(true);
        
    }
    
}

Setelah itu jalankan programnya dengan menekan Shift+F6 atau klik kanan, lalu pilih Run File.

Hasilnya:

Jendela perama dengan Swing

Apa maksud dari kode di atas?

Baik, saya akan jelaskan.

Perama dimulai dari mengimpor JFrame.

import javax.swing.JFrame;

Karena kita membutuhkan class JFrame, maka kita harus mengimpornya dari package javax.swing.

Selanjutnya kita bisa membuat objek jendela dari class JFrame.

JFrame myWindow = new JFrame();

Setelah itu, kita bisa mengatur properti jendela dengan mengeksekusi method-method yang tersedia dari calss JFrame seperti memberikan judul, mengatur ukuran, mengatur posisi, dsb.

// berikan judul pada jendela
myWindow.setTitle("Jendela Program");

// tentukan ukuran jendela
myWindow.setSize(400, 200);

// tampilkan jendela ke layar
myWindow.setVisible(true);

Sudah paham?

Bagus.

Tapi, bagaimana kalau kita ingin membuat jendela untuk aplikasi yang besar dan kompleks?

Apabila kita menggunakan cara hard coding, kita bisa membuat class turunan dari JFrame.

Seperti ini:

  • Class MainWindow
  • Class TransactionWindow
  • Class DetailWindow
  • dll.

Mari kita coba.

Buatlah sebuah file class java baru bernama MainWindow.java, kemudian isi dengan kode berikut:

import javax.swing.JFrame;

public class MainWindow extends JFrame {

    public MainWindow(){
        this.setTitle("Jendela Utama");
        this.setSize(600,320);
    }
    
    public static void main(String[] args) {
        MainWindow mWindow = new MainWindow();
        mWindow.setVisible(true);
    }
    
}

Karena kita membuat class MainWindow sebagai class turunan dari JFrame, maka kita bisa mengakses langsung properti JFrame dengan kata kunci this dari method constructor.

Selanjutnya untuk membuat objek dari class MainWindow pada method main().

Hasilnya:

Membuat jendela turunan

Berikutnya kita akan belajar membuat Jendela dengan cara drag and drop.

Membuat Jendela dengan Drag and Drop

Teknik ini lebih mudah dari hard coding, karena kita hanya perlu melakukan drag and drop saja.

Silahkan buat JFrame form baru di dalam package jendela.

Membuat JFrame Form baru

Isi namanya dengan AboutWindow.

Memberikan nama JFrame Form

Sekarang tambahkan sebuah label dengan menarik dari Palette ke dalam jendela.

Menambahkan Label JFrame Form

Karena drag & drop, kita bisa mengatur properti jendelanya dengan mudah.

Silahkan atur sesuai selera dan tambahkan beberapa komponen, sehingga menjadi seperti ini.

Desain JFrame Form

Komponen yang ditambahkan:

  • Label
  • TextArea

Sekarang coba run dan perhatikan hasilnya:

Eksekusi aplikasi JFrame

Itu saja?

Ya itu saja, jendela bisa jadi dalam sekejab dengan drag & drop.

Coba kita bongkar source code-nya:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package jendela;

/**
 *
 * @author petanikode
 */
public class AboutWindow extends javax.swing.JFrame {

    /**
     * Creates new form AboutWindow
     */
    public AboutWindow() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Aplikasi 1.0.0 - Petani Kode");

        jLabel1.setFont(new java.awt.Font("Noto Sans UI", 1, 18)); // NOI18N
        jLabel1.setText("Aplikasi 1.0.0");

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jTextArea1.setText("Aplikasi 1.0.0 adalah aplikasi untuk belajar pemrograman.\nAplikasi ini dibuat oleh Petani Kode untuk Demo.\nTerima kasih sudah menggunakan Aplikasi ini.\nUntuk saran dan kritik, silahkan kirim email ke [email protected].");
        jScrollPane1.setViewportView(jTextArea1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addGap(175, 175, 175)
                .addComponent(jLabel1)
                .addContainerGap(174, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(AboutWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(AboutWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(AboutWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(AboutWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AboutWindow().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration                   
}

Kodenya hampir sama seperti kode yang kita buat pada teknik hard coding, namun lebih lengkap.

Akhir Kata…

Kita sudah belajar dua cara dalam membuat jendela pada program GUI Java.

Pertama dengan cara hard coding dan yang kedua dengan drag & drop.

Cara yang manakah yang kamu suka?

Saya yakin pasti yang drag & drop, karena lebih mudah, praktis, dan cepat.

Lalu hard coding bagaimana?

Hard coding lebih susah, karena harus mengetik kode sendiri.

Namun bukan berarti tidak ada manfaatnya.

Hard Coding perlu kita coba untuk menambah pemahaman kita lebih dalam tentang pemrograman GUI di Java.

Jadi kedua cara tersebut ‘wajib’ dicoba untuk pemula yang ingin mendalami pemrograman Java Swing.

Akhir kata…

Terima kasih sudah menyimak sampai akhir.

Ada pertanyaan?