2012-01-14 102 views
3

在我的一個項目中,我一直在嘗試將JConsonle添加到另一個JPanel包含的JPanel女巫中。Java佈局問題

問題是,JConsole不斷從JPanel的頂部設置5px。首先,我想它是wasent beeing設置正確的容器,但在給它一個紅色背景後,我意識到控制檯正在設置從頂部5px。

我也嘗試過使用BorderLayout將其設置在JPanel的北或中心,但是 dosent也可以工作。

這是我的代碼:

public class MonopolyPanel extends JPanel { 

    JPanel consoleP = new JPanel(); 
    JConsole console = new JConsole(); 

    MonopolyPanel(){ 

    this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
    console.setPreferredSize(new Dimension(530, 300)); 
    consoleP.add(console); 
    this.add(consoleP); 

    } 
} 
+0

JConsole控件來自哪裏? – millimoose 2012-01-14 13:32:43

+0

這是一個外部庫,我在閱讀周圍的時候發現了它stackoverflow http://www.beanshell.org – user1146440 2012-01-14 13:35:15

+0

嘗試GridBagLayout .... – 2012-01-14 13:50:15

回答

3

控制檯被添加到默認情況下具有FlowLayout的consoleP中,默認情況下它的垂直和水平間距爲5px。實例化用的FlowLayout,零分差距應該做的伎倆

consoleP == new JPanel(new FlowLayout(align, 0, 0)); 
+0

在項目結束時,另外2個面板將存在於monopolyPanel中,因此它不需要您的解決方案,因爲 – user1146440 2012-01-14 14:39:10

+0

好點,編輯了答案:-) – kleopatra 2012-01-14 14:47:16

-1

你看着Border S'

這是可能的,你需要的JPanel的或JConsole的邊界設置爲一個EmptyBorder,就像這樣:

component.setBorder(BorderFactory.createEmptyBorder()); 

您也可以找一些有關的Javadoc插圖。

+0

不,「自由區域」不是由邊界,但由layoutManager - 你可以通過寫一個小sscce快速檢查,以驗證你的假設;-) – kleopatra 2012-01-14 14:45:18

+0

@kleopatra是的,可能應該有:)。當我回答這個問題時,沒有代碼示例,過去我發現使用EmptyBorder解決了奇怪插入問題。 – Dogmatixed 2012-01-14 17:46:00

0

從我的經驗,最好的和最靈活的佈局是GridBagLayout的。

在Swing中,99%的面板都是GridBagLayout,否則它不可能完全正確。

因爲使用該佈局,您可以設置重量,精確的填充和間距參數。

其他layoutmanagers是有限的,不能很好的配置。