Swing:两个JFrame之间的干净过渡

时间:2012-10-21 00:09:32

标签: java swing jframe

前段时间,我读到在应用程序中切换不同“屏幕”的最佳方法是设置不同的JFrame,然后简单地将第一个调用并调用第二个。例如,我有一个扩展JFrame的屏幕A和一个扩展JFrame的屏幕B,在一个应该切换到下一个屏幕的按钮上我会写这样的东西

JButton button = new JButton("show next screen");
button.addActionListener(){
    new ScreenB();
    frameA.dispose(); // assumed that we coded something like frameA = this earlier
}

现在的问题是,在两个帧的转换之间,我看到让我们说1/10屏幕A或屏幕B,这是非常难看的。什么是更好的解决方案?将屏幕扩展为Container并将其设置为ContentPane,始终保持相同的JFrame

2 个答案:

答案 0 :(得分:2)

尝试将WindowListener附加到FrameA

在您的动作监听器调用frameA.dipsose()中,只要框架集设置为DISPOSE_ON_CLOSE,它就会触发windowClosed中的WindowListener事件。

发生这种情况时,您现在可以打开新窗口。

答案 1 :(得分:-3)

你可以在另一个页面中调用来自JQuery的div标签,如:

$("#myDiveTag").load("http://mySecondPage.aspx");

如果您需要发送变量,您可以执行以下操作:

var myVar = $("#controlThatHasVariable");
$("#myDivTag").load("http://xxx.aspx?myData=" + myVar);

这是JQuery加载方法的语法:

load("URI", data, callback)

从本质上讲,您将在div标签内部处理什么,并将其替换为您正在呼叫的页面。你不需要所有的标签,因为JQuery将页面插入到已经存在的页面中。 所以你可以在按钮onClick事件上调用javascript函数并调用上面发布的Jquery来重新调用你在Jquery中调用的“屏幕”。