我正在使用 JinternalFrames 开发一个 Swing 应用程序,但是当我打开一个 Jinternelframe 时,它会出现在 JDesktopePane 中,并且再次单击同一组件时会出现另一个实例。我试图通过在构造函数中声明每个 JInternalFrame 的新实例来解决这个问题,但是在内存方面它是无用的,所以我问是否有任何方法可以摆脱这个问题。非常感谢你们。
问问题
752 次
2 回答
2
延迟初始化帧:
private JInternalFrame frame1;
private JInternalFrame frame2;
...
/**
* invoked when the button used to show the first frame is clicked
*/
private void showFrame1() {
if (frame1 == null) {
frame1 = new JInternalFrame();
// TODO initialize the frame
}
// TODO show the frame
}
// same for the other frames
于 2012-09-06T13:43:23.233 回答
0
这是可能的示例代码。希望这有帮助。在 JdesktopPane 所在的主应用程序中调用内部框架的菜单操作。
private void YourJinternalFrameMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
YourJinternalFrame nw = YourJinternalFrame.getInstance();
nw.pack();
//usefull part for you.. if open shows, if not creates new one
if (nw.isVisible()) {
} else {
desktopPane.add(nw);
nw.setVisible(true);
}
try {
nw.setMaximum(true);
} catch (PropertyVetoException ex) {
Logger.getLogger(MainApplication.class.getName()).log(Level.SEVERE, null, ex);
}
}
把它放在你的 YourJinternalFrame 里面
private static YourJinternalFrame myInstance;
public static YourJinternalFrame getInstance() {
if (myInstance == null) {
myInstance = new YourJinternalFrame();
}
return myInstance;
于 2013-03-25T21:33:32.543 回答