author Ahmad Muhardian

Trik Agar Jendela JFrame Selalu Tampil di Tengah Layar


Saat kita membuat program GUI dengan Swing, jendelanya sering tampil pada pojok kiri atas atau pada titik (0,0).

Bagaimana caranya agar jendela selalu tampil di tengah-tengah layar?

Apakah kita harus mengatur manual posisi titiknya?

Ya perlu, untuk lebih jelasnya mari kita bahas…

Class-class yang dibutuhkan

Ada dua class yang kita butuhkan untuk membuat jendela JFrame tampil di tengah-tengah.

  1. Dimension untuk membuat objek dimensi
  2. Toolkit untuk mengambil ukuran layar

Kedua class tersebut berada dalam package java.awt.

Method untuk Mengatur Posisi Jendela

Method untuk mengatur posisi jendela adalah setLocation() dengan argumen lokasi koordinat titik x dan y.

  1. x titik horizontal;
  2. y titik vertikal.

Posisi Jenela dalam koordinat layar

Maka untuk membuat jendela tampil di tengah-tengah layar, kita harus menyesuaikan koordinat x dan y berdasarkan tinggi dan lebar layar.

// mengambil ukuran layar
Dimension layar = Toolkit.getDefaultToolkit().getScreenSize();

// membuat titik x dan y
int x = layar.width / 2  - jendela.getSize().width / 2;
int y = layar.height / 2 - jendela.getSize().height / 2;

jendela.setLocation(x, y);

Pertama kita membagi tinggi dan lebar jendela dengan 2. Sehingga titik yang akan kita dapatkan tepat berada di tengah-tengah layar.

Misalkan ukuran layarnya adalah 800x600, maka titik yang akan didapatkan adalah x=400 dan y=300.

Akan tetapi jendelanya tidak tampil di tengah layar dengan sempurnya, karena jendela juga memiliki tinggi dan lebar.

Posisi tengah-tengah layar

Untuk mengatasi ini, hasil bagi dua dari tinggi dan lebar layar kita kurangi dengan tinggi dan lebar jendela yang dibagi dua juga.

int x = layar.width / 2  - jendela.getSize().width / 2;
int y = layar.height / 2 - jendela.getSize().height / 2;

Sekarang jendelanya sudah ditampilkan di tengah-tengah layar.

Posisi tengah-tengah jendela

Kode Lengkap

Sudah paham kan dengan teorinya?

Sekarang mari kita coba terapkan dalam kode.

Silahkan buat JFrame baru, lalu impor class yang dibutuhkan.

import java.awt.Dimension;
import java.awt.Toolkit;

Setelah itu, tambahkan kode berikut pada contstuctor atau di bawah initComponent().

// mengambil ukuran layar
Dimension layar = Toolkit.getDefaultToolkit().getScreenSize();

// membuat titik x dan y
int x = layar.width / 2  - this.getSize().width / 2;
int y = layar.height / 2 - this.getSize().height / 2;

this.setLocation(x, y);
kita menggunakan this untuk menggantikan jendela, karena jendela yang kita buat adalah class turunan dari JFrame.

Sehingga kode lengkapnya akan seperti ini:

import java.awt.Dimension;
import java.awt.Toolkit;

public class JendelaPercobaan extends javax.swing.JFrame {

    // konstruktor
    public JendelaPercobaan() {
        initComponents();
        
        // mengambil ukuran layar
        Dimension layar = Toolkit.getDefaultToolkit().getScreenSize();

        // membuat titik x dan y
        int x = layar.width / 2  - this.getSize().width / 2;
        int y = layar.height / 2 - this.getSize().height / 2;

        this.setLocation(x, y);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate=“collapsed” desc=“Generated Code”>                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("www.petanikode.com");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(138, 138, 138)
                .addComponent(jLabel1)
                .addContainerGap(143, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(134, 134, 134)
                .addComponent(jLabel1)
                .addContainerGap(149, Short.MAX_VALUE))
        );

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

    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(JendelaPercobaan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(JendelaPercobaan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(JendelaPercobaan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(JendelaPercobaan.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 JendelaPercobaan().setVisible(true);
            }
        });
    }

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

Silahkan di-run dan lihatlah hasilnya:

Jendela JFrame di tengah layar

Referensi: Stack Overflow

Baca Juga ini

Pemrograman Java Swing: Membuat Jendela dengan JFrame

Pemrograman Java Swing: Membuat Jendela dengan JFrame

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: Hard Coding Drag and drop Mari kita mulai… googletag.cmd.push(function () { googletag.display('div-gpt-ad-multibanner1'); }); Membuat Proyek BaruSebelum kita mulai mulai membuat jendela, buatlah proyek baru pada Netbeans.

Konversi Bilangan Desimal ke Bilangan Biner di Java

Konversi Bilangan Desimal ke Bilangan Biner di Java

Konversi bilangan desimal ke biner sangat mudah dilakukan di Java, karena ada method atau fungsi yang sudah disediakan untuk melakukannya. Berikut ini tampilan program konversi yang saya buat dengan Java (Swing). Terdapat dua tombol pada program tersebut. Tombol pertama berfungsi untuk menentukan tipe konversinya (Desi-ke-Bin atau Bin-ke-Desi). Kode yang dikerjakan di tombol tersebut adalah sebagai berikut. private void btnTipeKonversiActionPerformed(java.awt.event.ActionEvent evt) { if(btnTipeKonversi.

Belajar Java Swing: Cara Menggunakan JOptionPane untuk Membuat Dialog

Belajar Java Swing: Cara Menggunakan JOptionPane untuk Membuat Dialog

Agar program yang kita mempu berinteraksi dengan pengguna, kita harus membuat sebuah dialog dengannya. Pada Java Swing, terdapat sebuah komponen bernama JOptionPane untuk membuat dialog yang interakif. Bagaimana cara menggunakan JOptionPane? Mari kita simak pembahsannya… googletag.cmd.push(function () { googletag.display('div-gpt-ad-multibanner1'); }); Mengenal JOptionPaneJOptionPane merupakan sebuah kelas yang menyediakan jendela dialog. JOptionPane bisa kita gunakan untuk mengambil input, menampilkan informasi, menampilkan pesan error, menampilkan dialog konfirmasi, dan lain-lain.

Menghitung Akar Kuadrat dan Akar Kubik dengan Java

Menghitung Akar Kuadrat dan Akar Kubik dengan Java

Pada pelajaran Matematika, kadang kita sering menemukan perhitungan akar. Contoh, akar kuadrat dari 25 adalah 5, karena 5x5=25, bisa ditulis: $\sqrt{25} = 5$. Lalu kalau akar kubik dari 27 adalah 3, karena 3x3x3=27, bisa ditulis: $\sqrt[3]{27} = 3$. Bagaimana cara kita membuat perhitungan tersebu di Java? Perhitungan akar kuadrat dapat dilakukan dengan fungsi sqrt(). Fungsi ini terdapat dalam class Math. Jadi untuk menghitung akar seperti di atas dalam kode java dapat dilakukan dengan cara berikut ini:

Pemrograman Android di Linux dengan Eclipse

Pemrograman Android di Linux dengan Eclipse

Awalnya Google menggunakan Eclipse sebagai IDE untuk pengembangan aplikasi Android. Kemudian beralih ke Android Studio. Eclipse memang lebih ringan daripada Android Studio, akan tetapi Eclipse sudah tidak lagi didukung oleh Google. Artinya, kalau ada fitur terbaru atau API terbaru dari Android, kita (mungkin) tidak akan bisa menggunakannya di Eclipse. Namun tidak ada salahanya menggunakan Eclipse untuk membuat aplikasi Android. Bila kamu ingin mencobanya, silahkan ikuti langkah-langkah berikut untuk melakukan perisapan.

Belajar Java: Menggunakan Prosedur dan Fungsi untuk Membuat Sub-program

Belajar Java: Menggunakan Prosedur dan Fungsi untuk Membuat Sub-program

Pada contoh program di pembahasan sebelumnya, kita hanya menulis kode intruksi pada fungsi main() saja. Fungsi main() adalah fungsi utama dalam program Java. Semua kode yang kita tulis di dalamnya, akan langsung dieksekusi. Tapi masalahnya sekarang: “Bagaimana kalau kita membuat program yang cukup besar, apakah kita masih bisa menulis semua kodenya di dalam fungsi main()?” Bisa-bisa saja, tapi kurang efektif dan akan menghabiskan banyak tenaga untuk mengetik kodenya.