web-dev-qa-db-ja.com

GridBagLayoutのマージン/パディングJava

  1. 行/列全体のマージン/パディングをGridBagLayoutに設定することは可能ですか?制約オブジェクトの挿入図を使用しますが、このアプローチを使用すると、すべてのコンポーネントに下からパディングを設定する必要があります。

  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);
 }

セル間に「空気(パディング/マージン)」を追加するにはどうすればよいですか?

17
LuckyLuke

私の知る限り、最初の方法を実行する唯一の方法is各制約にInsetsオブジェクトを設定する...(ハンドコーディングレイアウトは明らかにJava:P)

ただし、インセットなどをいじることなく、2番目を実行する非常に簡単な方法があります。contentPaneのレイアウトを必要な垂直方向と水平方向のギャップがあるFlowLayoutに設定し、contentPaneにパネルを追加し、すべてを追加する代わりにcontentPaneに、それを新しいパネルに追加します。

7
hauntsaninja

insetクラスのGridBagConstraintsプロパティを使用します

例えば:

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

これがあなたが探しているものであることを願っています。

41
InsolencE