2012-01-14 60 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是有限的,不能很好的配置。