gpt4 book ai didi

java - JAVA 中的 GridBagLayout

转载 作者:行者123 更新时间:2023-12-02 02:44:55 25 4
gpt4 key购买 nike

我想使用 GridBagLayout 显示图像、JLabel 和 JTextField。

图像应该是这样的

enter image description here

这是我尝试过的,但是 JTextField 显示在图像下方,而不是除此之外

   JPanel panel = new JPanel(new GridBagLayout());
gbc = new GridBagConstraints();

for (int i = 0; i < ELEMENTS; i++) {
Image image = ImageIO.read(file[i]);
Image imageScaled = image.getScaledInstance(80, 95, Image.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(imageScaled);
foodLabel[i] = new JLabel(imageIcon);
qtyField[i] = new JTextField(3);
}

gbc.gridx = 0;
for (int i = 0; i < ELEMENTS; i++) {
if (i % 3 == 0) {
gbc.gridy += 2;
gbc.gridx = 0;
}
panel.add(foodLabel[i], gbc);
gbc.gridy++;
panel.add(qtyField[i], gbc);
gbc.gridx++;
gbc.gridy--;
tabbedPane.addTab(text, panel);
}

最佳答案

问题是您添加和减去 gridy 的值是错误的。要将代码调整为 qtyField 位于 foodLabel 的右侧,只需删除那些 gbc.gridy 并添加 gbc.gridx++panel.add(foodLabel[i], gbc) 之后。

现在,它不会像您的图像那样(至少我认为除非您正确设置 foodLabel,否则不会,即使您这样做,正确对齐也会有点过分)工作),为此,您可以创建一个新的 JLabel 数组 (foodImage),其大小与 foodLabel 相同,您只能在其中显示图像。那么你的代码就几乎是正确的,只需要移动一些行并添加foodImage。我写的,这里是:

JPanel panel = new JPanel(new GridBagLayout());
gbc = new GridBagConstraints();
// Just to give a space between the components
gbc.insets = new Insets(5, 5, 5, 5);

for (int i = 0; i < ELEMENTS; i++) {
Image image = ImageIO.read(file[i]);
Image imageScaled = image.getScaledInstance(80, 95, Image.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(imageScaled);
foodImage[i] = new JLabel(imageIcon);
foodLabel[i] = new JLabel("Label");
qtyField[i] = new JTextField(3);
}

gbc.gridx = 0;
for (int i = 0; i < ELEMENTS; i++) {
if (i % 3 == 0) {
gbc.gridy += 2;
gbc.gridx = 0;
}

// Add the image
panel.add(foodImage[i], gbc);
// Below the image
gbc.gridy++;
// Add the label
panel.add(foodLabel[i], gbc);
// Go back up
gbc.gridy--;
// Next column
gbc.gridx++;
// Add the textfield
panel.add(qtyField[i], gbc);
// Next column
gbc.gridx++;
tabbedPane.addTab(text, panel);
}

I ran this code, and should be like this

关于java - JAVA 中的 GridBagLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748114/

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