2012-08-14 85 views
1

我在主框架中創建了一個內部框架,並且我想從另一個框架中打開另一個內部框架。如何從netbeans中的另一個內部框架打開內部框架

我不知道該怎麼做。有什麼建議麼?

我試過很多了幾個不同的方式來打開另一個內部框架:

  • 我用調用setVisible(true)方法,但它不工作。
  • 我創建了mainFrame的對象,但沒有得到正確的方法。

我搜索了它並搜索了堆棧溢出,但找不到任何答案。

+2

爲了更快得到更好的幫助,請發佈[SSCCE](http:// sscce.org/)。 – 2012-08-14 11:33:18

回答

4

好了,你可以開始使用Java教程How to Use Internal Frames

但一個可能的過程可能是這樣的

JInternalFrame newFrame = JInternalFrame(); 
newFrame.setBounds(10, 10, 100, 100); 
newFrame.setVisible(true); 
getParent().add(newFame); // assuming our current class is a JInternalFrame on a JDeskTop 
+0

先生,我試過這段代碼,但它沒有奏效。我創建了一個內部框架。在它上面,我創建了一個按鈕。還有一個內部框架。當我點擊按鈕時,我想打開另一個內部框架。點擊按鈕,我寫了你告訴我的方法,但我沒有工作。 – PradeepBhati 2012-08-14 09:23:51

+0

給我們留下一些示例代碼,包括你正在添加的容器 - 我懷疑你要麼不使用JDesktopPane,要麼使用LayoutManager – MadProgrammer 2012-08-14 09:52:47

+0

不要忘記'pack()'。 :-) – 2012-08-14 14:16:17

2

你可以做這樣的事情:

適應的 InternalFrameDemo.java
public class InternalFrameDemo extends JFrame { 
    static int openFrameCount = 0; 
    static final int xOffset = 30, yOffset = 30; 

    JDesktopPane desktop; 

    public InternalFrameDemo() { 
     super("InternalFrameDemo"); 
     final int inset = 50; 
     final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset * 2); 

     // Set up the GUI. 
     desktop = new JDesktopPane(); // a specialized layered pane 
     createFrame(); // create first "window" 
     setContentPane(desktop); 
    } 

    protected void createFrame() { 
     final JInternalFrame frame = new JInternalFrame("Document #" + ++openFrameCount); 
     frame.setLocation(xOffset * openFrameCount, yOffset * openFrameCount); 
     frame.setSize(200, 100); 
     frame.setVisible(true); 
     frame.getContentPane().add(createButton()); 
     desktop.add(frame); 
     try { 
      frame.setSelected(true); 
     } catch (final java.beans.PropertyVetoException e) { 
     } 
    } 

    private JButton createButton() { 
     return new JButton(new AbstractAction("New") { 
      @Override 
      public void actionPerformed(final ActionEvent e) { 
       createFrame(); 
      } 
     }); 
    } 

    private static void createAndShowGUI() { 
     JFrame.setDefaultLookAndFeelDecorated(true); 
     final InternalFrameDemo frame = new InternalFrameDemo(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 

    public static void main(final String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
}