gpt4 book ai didi

java - BorderLayout 显示不正确

转载 作者:行者123 更新时间:2023-11-29 03:37:50 26 4
gpt4 key购买 nike

我想要一个 JFrame,在左侧和右侧有一个黑色边框,宽度为 withfOfJFrame/10。

现在,我的尝试看起来像这样:

JFrame f = new JFrame();
f.setSize(800, 600);
f.setLayout(new BorderLayout());

JPanel leftBorder = new JPanel();
JPanel rightBorder = new JPanel();
leftBorder.setBackground(Color.black);
rightBorder.setBackground(Color.black);
leftBorder.setSize(f.getWidth()/10, f.getHeight());
rightBorder.setSize(f.getWidth()/10, f.getHeight());
JPanel center = new JPanel();
center.setBackground(Color.red);

f.add(leftBorder, BorderLayout.WEST);
f.add(center, BorderLayout.CENTER);
f.add(rightBorder, BorderLayout.EAST);
f.setVisible(true);

这会在左侧和右侧添加一个黑色边框,但该边框具有固定大小并且在调整窗口大小时不会重新计算。大小甚至不到 800 的 1/10(JFrame 的起始宽度)。

我做错了什么?还是有更好的方法来做到这一点?

最佳答案

您可以使用 GridBagLayout 获得所需的结果和适当的权重:

public class Snippet {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

JPanel leftBorder = new JPanel();
JPanel rightBorder = new JPanel();
leftBorder.setBackground(Color.black);
rightBorder.setBackground(Color.black);

JPanel center = new JPanel();
center.setBackground(Color.red);

f.setLayout(new GridBagLayout());

GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.weighty = 1.0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;

gbc.gridx = 0;
gbc.weightx = 0.1;
f.add(leftBorder, gbc);

gbc.gridx = 1;
gbc.weightx = 0.8;
f.add(center, gbc);

gbc.gridx = 2;
gbc.weightx = 0.1;
f.add(rightBorder, gbc);

f.pack();
f.setVisible(true);
}
});
}
}

关于java - BorderLayout 显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587999/

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