gpt4 book ai didi

java - GridBagLayout - 不同的行大小

转载 作者:行者123 更新时间:2023-11-30 11:19:48 28 4
gpt4 key购买 nike

通常情况下,我对 Swing 和不同的布局并没有那么糟糕,但是这个真的让我很烦。

下图使用 GridBagLayout 有什么问题?每个粗矩形都是一个 JPanel。细线只是帮助获得正确的 y 值。

提前致谢!

Mein Problem

package at;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GridMask extends JFrame {

JPanel jPanel1, jPanel2, jPanel3, jPanel4, jPanel5, jPanel6;

public GridMask() {
unimportantStuff();

GridBagLayout gbl = new GridBagLayout();
setLayout(gbl);

GridBagConstraints gbc;

gbc = getGbc(0, 0, 3, 1, 0.5);
gbl.setConstraints(jPanel1, gbc);

gbc = getGbc(1, 0, 4, 1, 0.75);
gbl.setConstraints(jPanel2, gbc);

gbc = getGbc(2, 0, 3, 1, 0.5);
gbl.setConstraints(jPanel3, gbc);

gbc = getGbc(0, 3, 3, 1, 0.5);
gbl.setConstraints(jPanel4, gbc);

gbc = getGbc(1, 4, 2, 1, 0.25);
gbl.setConstraints(jPanel5, gbc);

gbc = getGbc(2, 3, 3, 1, 0.5);
gbl.setConstraints(jPanel6, gbc);

add(jPanel1);
add(jPanel2);
add(jPanel3);
add(jPanel4);
add(jPanel5);
add(jPanel6);

setVisible(true);
}

private GridBagConstraints getGbc(int x, int y, int height, int width, double weightY) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridheight = height;
gbc.gridwidth = width;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1.0;
gbc.weighty = weightY;

return gbc;
}

private void unimportantStuff() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();

jPanel1.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jPanel2.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jPanel3.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jPanel4.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jPanel5.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jPanel6.setBorder(BorderFactory.createLineBorder(Color.BLACK));
}

public static void main(String[] args) {
new GridMask();
}
}

结果是一个 JFrame,其中两行具有不同的高度,但一行中的单元格具有相同的高度。

最佳答案

but the cells in a row have all the same height.

gbc.fill = GridBagConstraints.BOTH;

您是在告诉布局调整所有组件的大小以填充每个单元格中的可用空间。

关于java - GridBagLayout - 不同的行大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068127/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com