postingan kali ini membahas masalah pada saat menjalankan JInternalFrame di java. yaitu bagaimana cara menampilkan JInternalFrame yang sama hanya sekali pada saat action diberikan. untuk membuat JinternalFrame di java bisa dilihat pada postingan sebelumnya. untuk mengakali masalah ini saya manfaatkan tipe data boolean. berikut ulasannya :

  • untuk contoh JInternalFrame nya saya gunakan JInternalFrame yang sudah dibuat sebelumnya.
  • saya ambil contoh untuk JInternalFrame yang InternalSatu.
  • tambahkan coding pada InternalSatu sehingga menjadi :

//..............................................coding..................//

private boolean visible = false;

public InternalSatu() {
initComponents();
this.visible = false;
}

public boolean getVisible(){
return visible;
}

public void setStatusVisible(boolean visible) {
this.visible = visible;
}
//........................................coding............................//
  • lalu klik kanan pada InternalSatu, pilih Event ->InternalFrame ->InternalFrameClosing dan InternalFrameIconified
  • tambahkan coding berikut untuk masing-masing event tersebut :

private void formInternalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
// TODO add your handling code here:
setStatusVisible(false);
}

private void formInternalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
// TODO add your handling code here:
setStatusVisible(true);
}

  • sekarang beralih ke Frame Utama/Induk.
  • sebelumnya pada menu item “Open Internal Satu “ memiliki event dengan coding seperti berikut:

private void openInternalSatuActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
InternalSatu satu = new InternalSatu();
jDesktopPane1.add(satu);
satu.setVisible(true);
}

  • ubah kembali coding untuk event pada menu item diatas sehingga menjadi :

InternalSatu satu;

public FrameUtama() {
initComponents();
satu = new InternalSatu();
}

private void openInternalSatuActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (!satu.getVisible() && !satu.isShowing()) {
satu = new InternalSatu();
jDesktopPane1.add(satu);
satu.setVisible(true);
}
}

sekarang jalankan programnya kembali dan lihat perubahan yang terjadi.JinternalFrame untuk InternalSatu hanya akan ditampilkan sekali walaupun menu item “Open Internal Satu” diklik berkali-kali. masalah berikut yang muncul pada JInternalFrame adalah saat InternalSatu diminimize dan menu item “Open Internal Satu” diklik, yang seharusnya terjadi adalah InternalSatu akan tampil. namun masalahnya adalah InternalSatu masih tetap dalam posisi minimize walaupun menu item “Open Internal Satu” diklik. kita akan bahas pada postingan selanjutnya………….šŸ˜€