2015-12-21 40 views
0

爲了用戶的方便,在閱讀用戶界面指南之後,我想要一個JMenu,其中的項目爲我的程序中打開的Windows,例如,不同的(非模態)對話框/框架。Swing - 打開窗口的菜單

菜單列出了窗口,並在單擊時關注它們(在Mac人機界面指南中提到)。它們在大多數程序中都很常見。

我怎麼能這樣做?到目前爲止,我認爲使用HashMapWindowAdapters,添加和刪除窗口出現時,但我不能解決如何實現這一點。

注 - 我有一個主框架和對話框,這些對話框在主框架的不同的類中被調用,它們將具有菜單。對不起,沒有特別相關的代碼可以幫助解釋。我知道Window.getWindows()但不確定如何使用它。

+2

開始由具有一看['窗口#getWindows'](http://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#getWindows ()) – MadProgrammer

+3

請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/q/9554636/418556) –

回答

2

How to Use Actions是一個很好的選擇「如果你有兩個或更多的組件執行相同的功能。」競爭的例子包括:

  • FileMenu,其說明文件的菜單。

  • ImageApp,它從菜單欄或上下文菜單中打開圖像。

  • InternalFrameFocus,一個JInternalFrame例如列舉有顯示瞭如何在一個菜單的Action使用setSelected()

    Action action = new AbstractAction(name) { 
        @Override 
        public void actionPerformed(ActionEvent ae) { 
         try { 
          MyFrame.this.setSelected(true); 
         } catch (PropertyVetoException e) { 
          e.printStackTrace(); 
         } 
        } 
    };