2017-01-20 81 views
-1

我想知道是否有辦法在創建JPanel時更改JPanel的大小。創建新的JPanel時可以設置JPanel的大小嗎?

我的代碼如下所示:

add(scoreArea, BorderLayout.NORTH); 
add(gameArea, BorderLayout.CENTER); 
add(new JPanel(), BorderLayout.WEST); 
add(new JPanel(), BorderLayout.EAST); 
add(new JPanel(), BorderLayout.SOUTH); 

我用JPanels創建一個邊界,但我想使他們更薄。我是新來的擺動,我只是想知道你是否可以在同一個語句中改變大小,或者如果我必須使JPanel對象和設置大小?

我試過,但它似乎不工作:

add(new JPanel(){ 
    setPreferredSize(new Dimension(10, 300)); 
}, BorderLayout.EAST); 

有沒有辦法做這樣的事情?

編輯:真的downvotes?只是問一個問題,我沒有看到downvote的需要。什麼是社區。

+2

首先,我建議使用'Border' API ,[如何使用邊框](https://docs.oracle.com/javase/tutorial/uiswing/components/border.html),它相當強大。你通常在尋找'setPreferredSize'(雖然我不鼓勵使用它),但是你可以創建一個自定義的類或工廠方法來爲你做這件事 – MadProgrammer

+2

這是行不通的,'new JPanel(){setPreferredSize new Dimension(10,300));}'but ** this ** will:'new JPanel(){{setPreferredSize(new Dimension(10,300));}}' - 注意雙花括號。但話雖如此,更好的解決辦法是遵循@ MadProgrammer的建議。 –

+0

*「我用JPanel創建了一個邊界..有沒有辦法做這樣的事情?」*使用EmptyBorder - 這不僅是'一種方式',而且確實是最好的方式***創造效果。 –

回答

0

可以使用EmptyBorder類設置JPanel(contaiter)保證金:

EmptyBorder margin = new EmptyBorder(top, left, bottom, right); 
getContentPane().setBorder(border); 

正確的方法來設置者優先尺寸是:

Dimension size = new Dimension(width, height); 
JPanel panel; 

add(panel = new JPanel(), BorderLayout.WEST); 
panel.setPreferredSize(size); 

add(panel = new JPanel(), BorderLayout.EAST); 
panel.setPreferredSize(size); 

add(panel = new JPanel(), BorderLayout.SOUTH); 
panel.setPreferredSize(size);