如何在代码上只创建一个JFrame而不是倍数?

时间:2018-06-18 21:22:16

标签: java jframe

我一直在搜索如何限制我的jFrame每次点击时只打开一个但是没有成功。我的代码是这样的:

public InserirCliente(boolean login){
    initComponents();
    if(login){
        jPanel1.setVisible(false);
    }
    else {

    }
}  

还有一个JInternalFrame:

{{1}}

非常简单,只需测试一下。但是怎么可以改变它只显示第一个而不是第一个,因为它被点击了?是否有句柄,如果已经创建了JInternalFrame的实例,它会收到?

1 个答案:

答案 0 :(得分:0)

首先,根据您的需要,将tela_inserir设为公共/私人变量:

private InserirCliente tela_inserir;

现在将以下方法添加到InserirCliente类:

public Boolean checkVisible(){
    if(jPanel1 != null){
        return jPanel1.isVisible();
    }
    return false;
} 

现在只检查内部JPanel是否为空(尚未创建),并且在按下按钮时不可见:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    //Only show new panel if i is not already visible:
    if (tela_inserir == null && tela_inserir.checkVisible() == false){
        login = true;
        tela_inserir = new InserirCliente(login);
        jDesktopPane1.add(tela_inserir);
        tela_inserir.setVisible(true);
    }
}                                        

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    //Only show new panel if i is not already visible:
    if (tela_inserir == null && tela_inserir.checkVisible() == false){
        login = false;
        InserirCliente tela_inserir = new InserirCliente(login);
        jDesktopPane1.add(tela_inserir);
        tela_inserir.setVisible(true);
    }
}