2012-05-09 231 views
0

在下面的代码中,为什么“我的应用程序”窗口位于前面的窗口?主要的方法是先构造这个窗口吧?所以当“我的窗口”JFrame出现时,不应该在后面?Java - Swing GUI窗口顺序

public class MyApp extends JFrame { 
public MyApp() { 
super(); 
setSize(300,600); 
setTitle("My Application"); 
setVisible(true); 
} 
public static void main(String[] args) { 
MyApp application = new MyApp(); 
JFrame window = new JFrame(); 
window.setSize(600,300); 
window.setTitle("My Window"); 
window.setVisible(true); 
} 
} 

回答

3

这简直是未定义的行为;不能保证或者窗口将始终在前面。当我运行你的代码(Mac OS X,Java 6)时,“我的窗口”出现在前面,但我毫不怀疑你正确地描述了系统上发生的事情。

1

1)你不能移动一个JFrame的toFront()在另一JFrame

2)不要创建一个以上的JFrame,也有与此Top-Level ContainertoFront另一个问题,toBack

3)你已经看JDialogJWindow作为另一个窗口

  • parentJFrame

  • setModal如果需要

  • ModalityTypes需要

+2

这实际上并没有回答这个问题... – Tharwen

+0

@Tharwen [你读这段代码有两个实例JFrames](http://stackoverflow.com/a/9554657/714968)1)第一个'MyApp扩展JFrame',2)第二个'JFrame窗口=新JFrame();'3)两者都可以从'InitialThread'中看到 – mKorbel

+0

我并不是说这是错的!只是它没有具体回答这个问题:“为什么”我的应用程序“窗口在前面的窗口?” – Tharwen