我创建了一个Swing应用程序,其中包含多个JInternalFrame,在鼠标单击事件时将其添加到JDesktopPane。我只想要在DesktopPane中存在相同内部框架的一个实例。我不想当用户打开框架时出现两次相同的框架..一次只能打开一个JInternalFrame
回答
简单的解决方案是您的问题是创建一个HashMap<String,JInternalFrame>
。 key
将标题JInternalFrame
和value
将object
JInternalframe
当前打开。当第一次打开内部框架时保存(key,value
)对HashMap
。禁用所有JInternalFrame
窗口的关闭按钮,以便用户不能处理显示的JInternalFrame
窗口。注册esc
关键各JInternalFrame
对象,这样,当按下键盘的按键esc
当你menu item
点击打开相同的内部框架当前显示JInternalFrame
最小的DesktopPane
。现在,检查一下,JInternalFrame
的title
中存在的那HashMap
为key
。如果存在,则检索该key
的value
,并通过JInternalFrame
变量引用它,然后在DesktopPane
上恢复相同的值。如果在HashMap
中不存在相应的title
条目,则创建一个新的JInternalFrame
对象,在HasMap
中为其输入相同的内容并显示它。
注:无论我已经张贴在这里是哪里 你可以有许多种
JInternalFrame
每个都具有独特的 不同functionality
局势的解决方案,并希望只保留一个的每个instance
那些JInternalFrame
。
http://docs.oracle.com/javase/tutorial/uiswing/events/internalframelistener.html这是有用的.. – pixylife 2013-03-17 13:32:04
@luzifer:是的。我已经过去了..你可以隐藏或最小化'JInternalFrame'取决于你的需要..我在这里发布的是解决方案,你可以有多种类型的'JInternalFrame',每种具有不同的功能,并且你只想保留每个'JInternalFrame'的一个实例.. – 2013-03-17 13:38:02
非常感谢你。 .. – pixylife 2013-03-17 14:02:35
以下是可能的示例代码。希望这个帮助。 菜单操作调用其中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;
试试这个简单的代码,这里面:
YourJinternalFrame nw = new YourJinternalFrame();
private void YourJinternalFrameMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
if(!nw.isVisible()){
YourJDesktopPane.add(nw);
nw.setVisible(true);
}
}
试试这个简单的代码 起飞类变量CHK并设置等于0 然后调用的JFrame方法 componentremoved 在这个集合中再次chk = 0 ,如果你打电话给你的内部框架设置 CHK = 1 和调用内部比较CHK wheather它是零个或不 多数民众赞成
- 1. 一次只能打开一个infowindow
- 2. 一次使用哈希映射打开JInternalFrame的一个实例
- 3. 一次只打开一个React-Bootstrap Popover
- 4. Java仅打开JInternalFrame的一个实例
- 5. 多个bootstrap手风琴面板 - 一次只能打开一个
- 6. jquery对话框只能打开一次
- 7. Ax2012窗体只能打开一次
- 8. 如何在同一个桌面窗格中从JInternalframe打开另一个JInternalframe
- 9. 只打开一次winform?
- 10. 一次只能打开一个可收起列表
- 11. 一次只能打开一个可折叠块
- 12. 一次只能打开一个手风琴选项卡
- 13. javascript/jquery弹出 - 一次只能打开一个弹出框
- 14. Google API V3一次只能打开一个infoWindow
- 15. SlideToggle in wordpress - 一次只能打开一个吗?
- 16. 一次只能打开一个infowindow谷歌地图
- 17. Bootstrap手风琴 - 一次只能打开一个
- 18. eclipse - 搜索一次只能打开一个文件
- 19. 一次只打开2个切换
- 20. 我怎样才能使一个div扩大点击一次只打开一个?
- 21. 在ListView里面一次只打开一个开关
- 22. 一次只能打开1个自定义元框
- 23. jquery对话框应该每个用户只能打开一次
- 24. WPF中只能打开一个窗口?
- 25. 只允许打开一次窗口
- 26. jQuery UI对话框只打开一次
- 27. jQuery对话框只会打开一次
- 28. WPF - C# - 只打开父窗口一次
- 29. jquery ui对话框只打开一次
- 30. WebDAV链接打开只读第一次
向我们展示什么,你都试过了。 – 2013-03-17 13:01:31
我用这种方法“removeAll()” – pixylife 2013-03-17 13:18:11
想法是:如果你点击一个标签或按钮,使用setEnable(false),这将禁用按钮,直到用户关闭InternalFrame,然后启用按钮。 – Azad 2013-03-17 13:29:39