2014-11-02 33 views
0

這是我的源代碼。 我無法將我的JInternalframe置於前面。 我已經嘗試了很多代碼,但沒有任何工作。如何從所有打開的內框架將前框架置於前面?

private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {           
    boolean b = true; 
    JInternalFrame[] j = jDesktopPane1.getAllFrames(); 
    no = new NewOrder(); 

    for (JInternalFrame Ji : j) { 
     if (Ji.isShowing()) { 
      b = false; 
      break; 
     } 
    } 

    if (!b) { 
     no.requestFocus(true); 
    } else { 
     dm = jDesktopPane1.getDesktopManager(); 
     jDesktopPane1.add(no); 
     dm.setBoundsForFrame(no, (jDesktopPane1.getWidth() - no.getWidth())/2, (jDesktopPane1.getHeight() - no.getHeight())/2, no.getWidth(), no.getHeight()); 
     dm.openFrame(no); 
     no.setVisible(true); 
    } 


} 

NewOrder no = new NewOrder(); 

if (no.isShowing()) { 
    no.toFront(); 
} else { 
    lo.LoadInterfaces(no, jDesktopPane1); 
} 

任何機構可以請解釋一下我爲什麼這事? 謝謝!

回答

1

使用setSelected()方法JInternalFrame;一個完整的例子被引用here。爲方便起見,請調用Action中的方法,如here所示。

附錄:典型的實現可能如下所示。

class MyFrame extends JInternalFrame { 

    private Action action; 

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

    public Action getAction() { 
     return action; 
    } 
} 
+0

setselected()不工作..你可以給我另一個想法.. – 2014-11-02 17:07:12

+0

我覺得你得到它的工作;如果您仍然遇到問題,請編輯您的問題以包含顯示您的方法的[完整示例](http://stackoverflow.com/help/mcve)。 – trashgod 2014-11-03 01:38:43

+0

好的,我會感謝你@trashgod – 2014-11-03 05:18:44

1

我發現它..

NewOrder no = new NewOrder(); 

    if (no.isShowing()) { 
     no.toFront(); 
    } else { 
     lo.LoadInterfaces(no, jDesktopPane1); 
    } 

這只是刪除初始化。而做初始化和申報一次。請任何機構解釋我爲什麼發生這種情況。請。

+1

'toFront()'有條件地調用'setSelected()'。 – 2014-11-04 16:06:33

+0

@Catalina島在工作時間表中影響不同嗎? – 2014-12-09 03:09:48

+0

必須顯示內部框架或相應的圖標以允許選擇。 – 2014-12-09 11:15:34