2013-03-17 87 views
0

我有一個2 JPanels,1個按鈕面板和一個圖形面板。我希望按鈕面板位於圖形面板的正下方,但按鈕面板會切斷中間的圖形面板。我一直在嘗試從討論中看來似乎是我嘗試做的最好的格式。任何人都可以給我一些關於格式問題的建議。JPanel格式問題

JFrame canvas = new JFrame("Baseball Strike K"); 


    JFrame canvas = new JFrame ("GraphicBoard"); 
     canvas.setVisible(true); 
     canvas.setSize(1000,1000); 
     canvas.setDefaultCloseOperation(EXIT_ON_CLOSE); 
//create two panels 
//add them to contentPane 

//set Layout 
     JPanel buttonPanel = createButtons(); 
     JPanel mainPanel = new Graphic(); //extends JPanel and writes the paint method 
     mainPanel.setSize(1000, 1000); 

     Container content = canvas.getContentPane(); 
     content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS)); 
     content.add(mainPanel); 
     content.add(buttonPanel); 
+1

代碼不足。至少需要查看Graphic和createButtons。可運行的示例也會非常有用 – MadProgrammer 2013-03-17 20:06:11

+0

查看Eclipse IDE中的WindowBuilder。你不會回頭。 – Java42 2013-03-17 20:09:39

+1

1)爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 2)參見[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/418556)3)'擴展JPanel並寫入paint方法'應該是'.. paintComponent方法' – 2013-03-17 20:30:39

回答

1
mainPanel.setSize(1000, 1000); 

佈局經理的工作是確定組件的大小,所以你永遠不會調用組件的setSize()方法。

相反,您應該向佈局管理器提示大小應該是多少。您可以通過覆蓋getPreferredSize()方法來返回適當的值來完成此操作。另外,我會選擇一個更合理的尺寸(1000,1000)在大多數屏幕上顯示都有點大。如果你真的想要你的繪畫區域這麼大,那麼我會將畫板添加到JScrollPane,然後將該畫板添加到框架。

嘗試讓您的代碼使用BoxLayout工作。然後我會建議一個更好的佈局管理器將使用BorderLayout。然後,您將油漆面板添加到CENTER,並將按鈕添加到SOUTH。現在,當您調整框架的大小時,油漆面板的大小將會調整。

canvas.setVisible(true); 

此外,該行代碼的位置是錯誤的。在使框架可見之前,您應該先將所有組件添加到框架。