我一直在研究如何将我的 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);
}
}