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