gpt4 book ai didi

java - 使 JLabel 在 JPanel 上居中

转载 作者:太空狗 更新时间:2023-10-29 22:59:02 27 4
gpt4 key购买 nike

我正在使用 NetBeans GUI 构建器来处理我的布局(我对 LayoutManagers 很糟糕)并试图放置一个简单的 JLabel,以便它始终(水平)居中于其父 JPanel 内。理想情况下,即使调整了 JPanel 的大小,这也会保持正确,但如果这是一个疯狂的编码量,而不是在首次创建 JPanel 时仅居中就足够了。

我自己尝试处理布局已经够糟糕了,但是由于 NetBeans GUI Builder 自动生成不可变代码,我不可能弄清楚如何进行这种居中,而且我无法在网上找到任何东西来帮助我。

感谢任何能引导我朝着正确方向前进的人!

最佳答案

这里有四种让组件居中的方法:

4 Centered Components

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

class CenterComponent {

public static JLabel getLabel(String text) {
return getLabel(text, SwingConstants.LEFT);
}

public static JLabel getLabel(String text, int alignment) {
JLabel l = new JLabel(text, alignment);
l.setBorder(new LineBorder(Color.RED, 2));
return l;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JPanel p = new JPanel(new GridLayout(2,2,4,4));
p.setBackground(Color.black);
p.setBorder(new EmptyBorder(4,4,4,4));

JPanel border = new JPanel(new BorderLayout());
border.add(getLabel(
"Border", SwingConstants.CENTER), BorderLayout.CENTER);
p.add(border);

JPanel gridbag = new JPanel(new GridBagLayout());
gridbag.add(getLabel("GridBag"));
p.add(gridbag);

JPanel grid = new JPanel(new GridLayout());
grid.add(getLabel("Grid", SwingConstants.CENTER));
p.add(grid);

// from @0verbose
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.X_AXIS ));

box.add(Box.createHorizontalGlue());
box.add(getLabel("Box"));
box.add(Box.createHorizontalGlue());
p.add(box);

JFrame f = new JFrame("Streeeetch me..");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(p);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
});
}
}

关于java - 使 JLabel 在 JPanel 上居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180198/

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