您可以在桌面被创建并且主框架可见之后使内部框架可见。在这种情况下,帧将被默认选中。
所以,你可以做什么一个例子:
- 创建主框架
- 创建桌面
- 创建内部框架,但不使其可见
- 启动线程,设置可见在内部框架上为true,但线程可以等待直到桌面显示
- 使主框架可见
- 在线程c所有internalFrame.setVisible(true)并退出该线程。
在这种情况下,内部框架将显示在桌面上,并且会根据需要进行选择。
您可能会想到其他解决方案而不使用线程,但将处理程序写入主框架的事件。在任何情况下,为了使内部框架在显示后可见,必须在显示具有主框架的桌面后显示它。
这里的例子,你可以使用:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.HeadlessException;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
private Internal internalFrame;
public Main() throws HeadlessException {
super("Internal Frame Test");
setBounds(10, 10, 600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
add(createDesktop(), BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent e) {
internalFrame.setVisible(true);
}
});
setVisible(true);
}
private Component createDesktop() {
JDesktopPane d = new JDesktopPane();
internalFrame = new Internal("first");
d.add(internalFrame);
return d;
}
public static class Internal extends JInternalFrame {
private static final long serialVersionUID = 1L;
public Internal(String title) {
super(title);
setBounds(10, 10, 300, 100);
}
}
public static void main(String[] a) {
new Main();
}
}
我尝试两个评论的例子,并且不正常工作 – wooshot 2010-11-03 15:53:14
我已经添加了一个示例。你可以尝试一下。 – 2010-11-03 16:25:36
好的! 谢谢! – wooshot 2010-11-03 17:26:18