7

我有 3 个面板。一个是主面板,其中包含 2 个较小的面板。

对于主面板,我使用了

setPreferredSize(new Dimension(350, 190));

对于较小的左侧面板,我使用了

setPreferredSize(new Dimension(100, 190));

对于较小的右侧面板,我使用了

setPreferredSize(new Dimension(250, 190));

但较小的面板保持相同的尺寸。我怎样才能解决这个问题?替代文字

这是我在主面板中的代码。

import model.*;
import java.awt.*;
import javax.swing.*;

public class Panel extends JPanel
{

public Panel(Prison prison)
{
    setup();
    build(prison);
}

private void setup()
{
    setBorder(BorderFactory.createLineBorder(Color.blue));
    setLayout(new BorderLayout(1, 1));
    setPreferredSize(new Dimension(350, 190));
}

private void build(Prison prison)
{
    JTabbedPane tab = new JTabbedPane();       
    tab.addTab("Input", null, new InputPanel(), "Input");
    tab.addTab("Display", null, new DisplayPanel(), "Display");
    add(tab);            
}
}
4

4 回答 4

10

不要这样做。

布局管理器的重点是允许动态调整大小,这不仅对于用户可调整大小的窗口而且对于更改文本(国际化)和不同的默认字体大小和字体都是必要的。

如果您正确使用布局管理器,它们会处理面板尺寸。为了避免当用户增加窗口大小时组件在整个屏幕上展开,有一个左对齐 FlowLayout 的最外层面板,并将 UI 的其余部分作为其单个子项 - 这将为 UI 提供其首选大小和任何盈余用背景色填充。

于 2009-10-20T14:33:38.173 回答
1

看起来您正在使用 GridLayout 或 FlowLayout,这两者都不是您想要的。您可能想要使用BoxLayout,它尊重其组件的首选尺寸。

final JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(leftPanel);
p.add(mainPanel);
p.add(rightPanel);
于 2009-10-20T13:03:05.993 回答
0

也-这是首选尺寸。如果您不想允许调整大小,您也可以设置最大尺寸。

如果可以,您可能想查看MIG布局,但 BoxLayout 也很容易使用,并且已经在 java 工具包中。

于 2009-10-20T14:29:22.013 回答
-2

就是这个。

buttonPanel = new JPanel();
buttonPanel.setSize(new Dimension(30, 100));

不要让布局管理器调整您的尺寸。

于 2014-05-20T16:21:10.330 回答