我創建了一個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