Java 如何在代码上只创建一个JFrame而不是多个JFrame?
我一直在寻找如何限制我的jFrame每次点击时只打开一个,但没有成功。我的代码如下:Java 如何在代码上只创建一个JFrame而不是多个JFrame?,java,jframe,Java,Jframe,我一直在寻找如何限制我的jFrame每次点击时只打开一个,但没有成功。我的代码如下: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: login = true; InserirCliente tela_inserir = ne
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\u inserir
设置为公共/私有变量:
private InserirCliente tela_inserir;
现在将以下方法添加到InserirCliente类中:
public Boolean checkVisible(){
if(jPanel1 != null){
return jPanel1.isVisible();
}
return false;
}
现在只需检查内部JPanel是否为null(尚未创建)并且在按下按钮时不可见:
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);
}
}
创建负责创建/管理框架的经理或工厂。当它被要求“打开”帧时,它应该检查它的内部缓存,以确定帧是否存在,如果不存在,则创建它,如果它没有找到答案,则可能将其放在前面@Sorifind,我在项目中更改了一些内容,现在我使用一个按钮向用户添加新地址。但是你的代码在这里不起作用。我在“clientcreator”中创建了新JForm的私有变量,并用一个新按钮“addaddress”插入了您的代码。可能是“tela_inserir.checkVisible()”部分导致了错误。因为我不知道您编写的函数的jPanel1是什么,所以我创建了一个表单并将其放入tela_inserir中。无论如何,运气不好,但是谢谢,但是我在我的内部表单中使用了一个静态变量isOpen,它可以在“addaddress”按钮中进行操作。因此,如果isOpen为false,它可以创建新的JForm并将isOpen设置为true。退出新JForm时,isOpen等于false,一切按此进行:D