2017-02-11 73 views
0

我想添加按鈕到框架,我嘗試以兩種方式。將佈局管理器添加到JPanel和JFrame

  1. 更改JPanel的佈局,然後直接添加按鈕到面板。 (在下面的代碼註釋部分)。然後我將面板添加到一個框架。這種方法奏效,它顯示了JFrame中的按鈕。

  2. 創建BorderLayout,使用addLayoutComponents()方法添加按鈕。然後將此blBorderLayout參考)添加到面板,然後添加JFrame。 這種方法爲什麼不在框架中顯示按鈕?我哪裏做錯了?

任何人都可以幫助我學習AWT組件嗎?我的意思是先閱讀什麼和概念的順序。

jf = new JFrame(); 
jp= new JPanel(new BorderLayout()); 

/*jp.add(new JButton("North"), BorderLayout.NORTH); 
jp.add(new JButton("South"), BorderLayout.SOUTH); 
jp.add(new JButton("East"), BorderLayout.EAST); 
jp.add(new JButton("West"), BorderLayout.WEST); 
jp.add(new JButton("Center"), BorderLayout.CENTER); 
jf.add(jp); 
*/ 

BorderLayout bl = new BorderLayout(); 

bl.addLayoutComponent(new JButton("North"), BorderLayout.NORTH); 
bl.addLayoutComponent(new JButton("South"), BorderLayout.SOUTH); 
bl.addLayoutComponent(new JButton("East"), BorderLayout.EAST); 
bl.addLayoutComponent(new JButton("West"), BorderLayout.WEST); 
bl.addLayoutComponent(new JButton("Center"), BorderLayout.CENTER); 
jp.setLayout(bl); 
jf.add(jp); 
+0

*「任何人都可以幫助我學習AWT **組件**嗎?」*儘管AWT對於佈局,顏色和字體等功能仍然有用,但只需保留基於AWT的組件。它們已經完全被(更好的)Swing等價物取代。或者當我把它放在我的一個普通的複製/粘貼評論中:爲什麼要使用AWT?看到[這個答案](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)有很多很好的理由放棄AWT組件,以支持Swing。 –

回答

3

第二種方法不工作,因爲它是錯誤的。您不應直接將組件直接添加到佈局管理器,而是添加到使用佈局管理器的容器中,這在佈局管理器教程中有詳細說明:Layout Manager Tutorial。根據BorderLayout API,編碼人員不應直接調用addLayoutComponent方法,而是在將組件添加到容器時由容器本身間接調用它。該方法將組件添加到版面,但不添加到容器本身,這是一個關鍵區別。

+0

感謝氣墊船充滿了鰻魚。但addLayoutComponent的目的是什麼?如果這不應該由編碼器明確使用。 –

+0

同樣,它被分配了佈局管理器的容器使用。由於它被外部類使用,它必須是公開的。但是,教程再次解釋如何使用佈局,爲什麼不從那裏開始? –

相關問題