Java 如何在释放当前jframe时将上一个jframe设置为可见

Java 如何在释放当前jframe时将上一个jframe设置为可见,java,swing,jframe,visibility,Java,Swing,Jframe,Visibility,我正在制作一个JavaGUI项目,它由两个框架组成 问题是,当我从firstframe调用secondframe时,我将其设置为firstframe可见性设置为false。问题是如何使用第二帧中的按钮使第一帧再次可见 我是否应该放弃这个方法,转而创建一个新的jpanel???jpanel是否具有与jframe类似的功能?请考虑使用CardLayout。这样,您就可以通过多个UI进行切换,而不需要另一个框架 编辑:正如纪尧姆在评论中所说,安德鲁的回答还包括如何使用布局 Edit2: 您要求我提供更

我正在制作一个JavaGUI项目,它由两个框架组成

问题是,当我从firstframe调用secondframe时,我将其设置为firstframe可见性设置为false。问题是如何使用第二帧中的按钮使第一帧再次可见


我是否应该放弃这个方法,转而创建一个新的jpanel???jpanel是否具有与jframe类似的功能?

请考虑使用
CardLayout
。这样,您就可以通过多个UI进行切换,而不需要另一个框架

编辑:正如纪尧姆在评论中所说,安德鲁的回答还包括如何使用布局

Edit2:
您要求我提供更多关于我最新帖子的信息,下面是这样一个类的外观:

import javax.swing.JFrame;


public abstract class MyFrameManager {
    static private JFrame   startFrame,
                        anotherFrame,
                        justAnotherFrame;

static public synchronized JFrame getStartFrame()
{
    if(startFrame == null)
    {
        //frame isnt initialized, lets do it
        startFrame = new JFrame();
        startFrame.setSize(42, 42);
        //...
    }

    return startFrame;
}

static public synchronized JFrame getAnotherFrame()
{
    if(anotherFrame == null)
    {
        //same as above, init it
    }

    return anotherFrame;
}

static public synchronized JFrame getJustAnotherFrame()
{
    //same again
    return justAnotherFrame;
}

public static void main(String[] args) {
    //let's test!

    JFrame start = MyFrameManager.getStartFrame();
        start.setVisible(true);

    //want another window
    JFrame another = MyFrameManager.getAnotherFrame();
        another.setVisible(true);

    //oh, doenst want start anymore
    start.setVisible(false);
}
}
这样,您只需实例化每个
JFrame
一次,但始终可以通过manager类访问它们。之后如何处理它们是您的决定。

我还使它具有线程安全性,这对单例至关重要。

考虑使用
CardLayout
。这样,您就可以通过多个UI进行切换,而不需要另一个框架

编辑:正如纪尧姆在评论中所说,安德鲁的回答还包括如何使用布局

Edit2:
您要求我提供更多关于我最新帖子的信息,下面是这样一个类的外观:

import javax.swing.JFrame;


public abstract class MyFrameManager {
    static private JFrame   startFrame,
                        anotherFrame,
                        justAnotherFrame;

static public synchronized JFrame getStartFrame()
{
    if(startFrame == null)
    {
        //frame isnt initialized, lets do it
        startFrame = new JFrame();
        startFrame.setSize(42, 42);
        //...
    }

    return startFrame;
}

static public synchronized JFrame getAnotherFrame()
{
    if(anotherFrame == null)
    {
        //same as above, init it
    }

    return anotherFrame;
}

static public synchronized JFrame getJustAnotherFrame()
{
    //same again
    return justAnotherFrame;
}

public static void main(String[] args) {
    //let's test!

    JFrame start = MyFrameManager.getStartFrame();
        start.setVisible(true);

    //want another window
    JFrame another = MyFrameManager.getAnotherFrame();
        another.setVisible(true);

    //oh, doenst want start anymore
    start.setVisible(false);
}
}
这样,您只需实例化每个
JFrame
一次,但始终可以通过manager类访问它们。之后如何处理它们是您的决定。

我还使它具有线程安全性,这对单例至关重要。

查看查看查看
JTabbedPane
也可以用于删除多帧的使用。这是正确的,但这会让用户始终在这些帧后切换。也许提问者不希望这样。实际上,我的一个框架调用其他10个框架(我还没有创建),其他框架本身调用其他框架。所以选项卡式窗格是无用的。@chettyharish所以
CardLayout
将是这种情况下最好的方法。如果希望同时使用多个帧,也可以将
JDesktopPane
JInternalFrame
s一起使用,但是MDI非常有用;)但是,假设有一种方法可以从另一个jframe设置jframe的可见性吗?
JTabbedPane
也可以用于删除多个帧的使用。这是正确的,但这会让用户始终切换到这些帧之后。也许提问者不希望这样。实际上,我的一个框架调用其他10个框架(我还没有创建),其他框架本身调用其他框架。所以选项卡式窗格是无用的。@chettyharish所以
CardLayout
将是这种情况下最好的方法。如果希望同时使用多个帧,也可以将
JDesktopPane
JInternalFrame
s一起使用,但是MDI非常有用;)但假设有一种方法可以从另一个jframe设置jframe的可见性吗?