gpt4 book ai didi

java - 获得这样的显示的正确 GridbagLayout 配置是什么?

转载 作者:行者123 更新时间:2023-11-29 05:22:24 26 4
gpt4 key购买 nike

这是我想要得到的:

expected whole display

我遇到的问题与右上部分有关:

expected display

在我的代码中,蓝色 block 绝不会跨越两个 绿色 block 。它卡在左边或右边(取决于我应用的权重,gridx 和 gridy 值保持不变):

actual displayactual display

我有正确的 gridx/gridy 值,但我无法获得正确的权重。正确的代码是什么?

编辑:这是一个最小的工作示例:

代码:

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Test {

public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();

frame.add(panel);

panel.setLayout(new GridBagLayout());

JLabel score1 = new JLabel("Score1");
JLabel score2 = new JLabel("Score2");
JLabel team1 = new JLabel("Team1TestTest");
JLabel team2 = new JLabel("Team2TestTest");
JLabel clock = new JLabel("Clock");

// Layout
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(10,10,10,10);
gbc.anchor = GridBagConstraints.CENTER;

gbc.weighty = gbc.weightx = 1;

// First two lines
gbc.gridy=0;

// -teams
gbc.gridx=0;
gbc.gridheight = 1;
gbc.gridwidth = 2;
panel.add(team1,gbc);
gbc.gridx=2;
gbc.gridheight = 1;
gbc.gridwidth = GridBagConstraints.REMAINDER;
panel.add(team2,gbc);

// -score 1
gbc.gridy=1;
gbc.gridx=0;
gbc.gridheight = 1;
gbc.gridwidth = 1;
panel.add(score1,gbc);
// -clock
gbc.gridx=1;
gbc.gridheight = 1;
gbc.gridwidth = 2;
panel.add(clock,gbc);
// -score 2
gbc.gridx=3;
gbc.gridheight = 1;
gbc.gridwidth = GridBagConstraints.REMAINDER;
panel.add(score2,gbc);

frame.setContentPane(panel);
frame.setVisible(true);
frame.pack();

while(true) {}
}
}

结果:

actual MCVE result

最佳答案

您可以创建另一个 GridBagLayout 面板并将其添加到第一个面板中作为第二行的左侧部分,宽度等于 4。

enter image description here

关于java - 获得这样的显示的正确 GridbagLayout 配置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146800/

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