Java中GridBagLayout中的Margin/padding

21
  1. GridBagLayout中,是否可以为整个行/列设置margin/padding?我使用约束对象上的inset,但是使用这种方法,我需要在每个组件上单独设置底部间距。

  2. 是否可以对JFrame中的所有内容进行填充?因为现在每个组件都与框架对齐。

  constraints.weightx = 2;
  constraints.weighty = 1;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, questionPanel = new QuestionPanel(), 0, 0, 1, 1);

  constraints.weightx = 1;
  constraints.weighty = 1;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, categoryPanel = new CategoryPanel(), 0, 1, 1, 1);

  constraints.weightx = 1;
  constraints.weighty = 0;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  addComponent(this, layout, constraints, answerPanel = new AnswerPanel(), 1, 0, 2, 1);

  constraints.weightx = 1;
  constraints.weighty = 2;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, tabPane = new JTabbedPane(), 2, 0, 2, 1);

  constraints.weightx = 1;
  constraints.weighty = 0;
  constraints.fill = GridBagConstraints.NONE;
  constraints.anchor = GridBagConstraints.SOUTHEAST;
  addComponent(this, layout, constraints, buttonPanel = new ButtonPanel(), 3, 1, 1, 1);

我正在使用一个私有方法 addComponent:

private void addComponent(Container context, GridBagLayout _layout, GridBagConstraints            _constraints, Component component, int row, int column, int width, int height) {
  _constraints.gridx = column;
  _constraints.gridy = row;
  _constraints.gridwidth = width;
  _constraints.gridheight = height;

  _layout.setConstraints(component, _constraints);
  context.add(component);
 }

我该如何在单元格之间添加一些"空隙(内/外边距)"?


我会说是的和是的... 但是,如果没有查看一些代码,很难确定。你能贴上一小段代码吗?这将非常有帮助,因为你的问题非常泛泛而谈。 - chahuistle
因为那里有两个问题,所以被踩了。 - Line
2个回答

52

使用GridBagConstraints类的insets属性。

例如:

GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);

希望这是您正在寻找的。


9
据我所知,完成第一个任务的唯一方法是为每个约束设置一个Insets对象...(在Java中手动编写布局显然并不容易 :P)
但是有一种非常简单的方法可以完成第二个任务,而不需要处理任何Insets或其他内容:将contentPane的布局设置为带有所需垂直和水平间隙的FlowLayout,将一个面板添加到contentPane中,而不是将所有内容都添加到contentPane中,将其添加到新面板中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接