行/列全体のマージン/パディングをGridBagLayout
に設定することは可能ですか?制約オブジェクトの挿入図を使用しますが、このアプローチを使用すると、すべてのコンポーネントに下からパディングを設定する必要があります。
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);
}
セル間に「空気(パディング/マージン)」を追加するにはどうすればよいですか?
私の知る限り、最初の方法を実行する唯一の方法is各制約にInsetsオブジェクトを設定する...(ハンドコーディングレイアウトは明らかにJava:P)
ただし、インセットなどをいじることなく、2番目を実行する非常に簡単な方法があります。contentPaneのレイアウトを必要な垂直方向と水平方向のギャップがあるFlowLayoutに設定し、contentPaneにパネルを追加し、すべてを追加する代わりにcontentPaneに、それを新しいパネルに追加します。
inset
クラスのGridBagConstraints
プロパティを使用します
例えば:
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);
これがあなたが探しているものであることを願っています。