Java Swing GridBagLayout - 在面板上放置两个元素的问题

时间:2010-11-28 16:18:24

标签: java swing gridbaglayout

首先我会告诉你它是怎么回事

picture_how_it_is

这应该是(请参阅我的评论中的链接):

标签必须打开,TabPane必须在屏幕的其余部分填充所有方向的边距。

这是使用GridBagLayout进行布局的代码:

// Layout --begin--
    this.mainPanel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();

    // Layout:headLineLabel --begin--
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.ipadx = 0;
    gbc.ipady = 0;
    gbc.insets = new Insets(0, 10, 0, 0);
    gbc.anchor = GridBagConstraints.FIRST_LINE_START;
    this.mainPanel.add(this.headLineLabel, gbc);
    // Layout:headLineLabel --end--

    // Layout:FestplattenreinigerGraphicalUserInterfaceTabbedPane --begin--
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.ipadx = 0;
    gbc.ipady = 0;
    gbc.insets = new Insets(10, 10, 10, 10);
    gbc.anchor = GridBagConstraints.CENTER;
    this.mainPanel.add(new FestplattenreinigerGraphicalUserInterfaceTabbedPane(), gbc);
    // Layout:FestplattenreinigerGraphicalUserInterfaceTabbedPane --end--
    // Layout --end--

您需要知道的事情:

  1. FestplattenreinigerGraphicalUserInterfaceTabbedPane扩展了JTabbedPane。
  2. 我尝试指定所有约束(即使使用其default-val)来练习。
  3. 如果我赞扬achors,布局仍然是如此。
  4. 这件事有什么不对?

    非常感谢THX! (对不起,我不能直接发布图片+只有1个链接,因为我是新的-.-)

3 个答案:

答案 0 :(得分:0)

你已经省去了必要的重量和重量,或者一切都会在中间混在一起。所以在添加tabpane之前添加:

gbc.weightx = 1.0;
gbc.weighty = 1.0;

答案 1 :(得分:0)

为了做到这样的事情,确切地说你的样本,我认为你可以使用NetBeans中的“免费设计”而不是GridBagLayout,然后限制调整应用程序窗口大小的能力。

答案 2 :(得分:0)

不要使用GridBagLayout。尝试BorderLayout。 NORTH中的标签和CENTER中的选项卡式窗格。

或者也许是垂直的BoxLayout。