布局问题-Java

布局问题-Java,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我在一个我一直在做的项目中使用GridBagLayout,问题是当我在我的计算机或我大学的其他计算机中编译时,它正确地显示了我想要它的样子 但当我在另一台电脑上运行它时,它的显示会有所不同,左上角的面板和雷达面板与实际情况不同 我们都使用相同的JDK和NetBeans 7.3,所以我不知道问题出在哪里 这是我用于将面板添加到框架的方法 private void agregarPaneles() { this.setLayout(new GridBagLayout()); G

我在一个我一直在做的项目中使用GridBagLayout,问题是当我在我的计算机或我大学的其他计算机中编译时,它正确地显示了我想要它的样子

但当我在另一台电脑上运行它时,它的显示会有所不同,左上角的面板和雷达面板与实际情况不同

我们都使用相同的JDK和NetBeans 7.3,所以我不知道问题出在哪里

这是我用于将面板添加到框架的方法

private void agregarPaneles() {

    this.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(10, 10, 10, 10);
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    add(scrollerVuelos, gbc);
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    add(panelEstado, gbc);
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    add(panelOrdenes, gbc);
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.gridwidth = 3;
    gbc.gridheight = 1;
    add(panelRadar, gbc);

}

您发布的代码不足以为您提供准确答案,但通常:

如果GridBagLayout没有足够的空间以其首选大小显示组件,则将使用组件的最小大小。由于许多组件的最小尺寸很小,因此组件可以缩小到几乎为零

因此,您可能需要在面板上设置最小尺寸。您还可以查看weightX和weighty值,因为它们对组件的大小调整有影响

有关更多信息和示例,请阅读关于
如何使用GridBagLayout
的Swing教程


还请记住,如果使布局更容易,可以将嵌套面板与不同的布局管理器一起使用。例如,主布局可能应该是边界布局。然后在北部使用GridLayout添加一个面板。您可以在中间添加另一个面板。

您发布的代码不足以给出准确答案,但通常:

如果GridBagLayout没有足够的空间以其首选大小显示组件,则将使用组件的最小大小。由于许多组件的最小尺寸很小,因此组件可以缩小到几乎为零

因此,您可能需要在面板上设置最小尺寸。您还可以查看weightX和weighty值,因为它们对组件的大小调整有影响

有关更多信息和示例,请阅读关于
如何使用GridBagLayout
的Swing教程


还请记住,如果使布局更容易,可以将嵌套面板与不同的布局管理器一起使用。例如,主布局可能应该是边界布局。然后在北部使用GridLayout添加一个面板。在中间添加另一个面板。

组件的首选尺寸可能不适合框架的可用空间,并且
GridBagLayout
正在恢复使用组件的最小尺寸

您可以使用
GridBagConstraints#weightx
GridBagConstraints#weighty
GridBagConstraints#fill=GridBagConstraints。这两种方法都可以尝试并强制组件使用其所在单元的整个可用空间


您还应该使用
Frame#pack
来打包框架,而不是手动设置其大小,这将尝试调整框架的大小,使其能够满足内容首选大小的要求。组件的首选大小可能不适合框架的可用空间,并且
GridBagLayout
正在恢复使用组件的最小大小

您可以使用
GridBagConstraints#weightx
GridBagConstraints#weighty
GridBagConstraints#fill=GridBagConstraints。这两种方法都可以尝试并强制组件使用其所在单元的整个可用空间


您还应该使用
Frame#pack
来打包框架,而不是手动设置其大小,这将尝试调整框架的大小,使其能够满足内容首选大小的要求

事实上,我设置了最小大小,效果很好,我仍然不明白为什么它在某些计算机上工作,而在其他使用相同jdk的计算机上却不工作。@sandiego因为不同的计算机使用不同的渲染技术、字体度量和其他元素,这些都会将suitables引入系统,这就是为什么您应该始终使用布局管理器;)事实上,我设置了最小大小,它工作得很好,但我不明白为什么它在某些计算机上工作,而在其他具有相同jdk的计算机上却不工作。@sandiego因为不同的计算机使用不同的渲染技术、字体度量和其他元素,这些都会将适用项引入系统,这就是为什么您应该始终使用布局管理器;)