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



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

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
login = true;
InserirCliente tela_inserir = new InserirCliente(login);
jDesktopPane1.add(tela_inserir);
tela_inserir.setVisible(true);
}                                        
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
login = false;
InserirCliente tela_inserir = new InserirCliente(login);
jDesktopPane1.add(tela_inserir);
tela_inserir.setVisible(true);
}    

还有一个JInternalFrame,它:

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

非常简单,只是测试一下。但是,如何将其更改为仅显示第一个而不是第一个,因为它正在点击?是否有句柄,以便在已创建 JInternalFrame 的实例时接收?

首先,根据需要将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);
}
}   

最新更新