2016-03-05 121 views
0

getContentPane方法在JFrame class中有什麼用法?我GOOGLE了它,但我無法找到適當的答案。JFrame類中的getcontentpane方法

class MainFrame extends JFrame { 

    public MainFrame(String title) { 
     super(title); 

     // Set layout manager 
     setLayout(new BorderLayout()); 

     // Create Swing component 
     JTextArea textArea = new JTextArea(); 
     JButton button = new JButton("Click me!"); 

     // Add Swing components to content pane 
     Container c = getContentPane(); 

     c.add(textArea, BorderLayout.CENTER); 
     c.add(button, BorderLayout.SOUTH); 

     JButton button1 = new JButton("Click me again!"); 
     add(button1,BorderLayout.NORTH); 
     button.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       textArea.append("Hello\n"); 
      } 

     }); 
     button1.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       textArea.append("Hello\n"); 
      } 

     }); 

    } 
} 

回答

0

JFrame類中getcontentpane方法的用法是什麼?

在這種情況下沒有。由於Java 1.5 add已自動添加組件到ContentPane所以

c.add(textArea, BorderLayout.CENTER); 

可以寫成

add(textArea, BorderLayout.CENTER); // can drop BorderLayout.CENTER obviously 

類似button1是如何處理

存在這樣的情況,其中仍然獲得有用ContentPane,如

setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)); 
+0

那麼爲什麼我們有這樣的方法?它有什麼用處。請給我適當的例子。 –

0

容器有幾層。您可以將圖層視爲覆蓋容器的透明膠片。在Java Swing中,用於保存對象的圖層稱爲內容窗格。對象被添加到容器的內容窗格層。

getContentPane()方法檢索內容窗格層,以便您可以向其添加對象。

內容窗格是由Java運行時環境創建的對象。您不必知道內容窗格的名稱就可以使用它。

getContentPane()返回一個容器來容納對象。您可以在返回的容器上添加對象,而不是直接將對象添加到JFrame或JDialog。

+0

我沒有收到。當我們通過容器添加按鈕或者沒有容器時,我們得到的結果是一樣的。爲什麼? –

+0

編輯答案。希望你得到它。 –

+0

因爲它返回遵循邊界佈局的JFrame的默認內容窗格。你可以添加像JPanel這樣的容器到框架,並添加對象。添加到'getContentPane'返回的容器中的 –

0

Getvontentpane()將返回框架的內容窗格。 Contentpane就像一個添加所有組件的地方。