gpt4 book ai didi

java - 在 JFrame 上居中 JLabel

转载 作者:行者123 更新时间:2023-11-29 04:45:12 24 4
gpt4 key购买 nike

我最近一直在阅读关于在 JPanel 中居中 JLabel 的内容。我看到了很多以下两个答案:

label.setHorizontalAlignment(JLabel.CENTER);

并在创建 JLabel 时

static JLabel label = new JLabel("Some Text Here", SwingConstants.CENTER);

我尝试过的这些选项均无效。所有文本都与这两个答案保持一致(我什至尝试过同时使用它们,但没有成功)。这是我的一个标签及其实例化和所有内容的完整代码:

//JLabel title = new JLabel("Title", SwingConstants.CENTER);
JLabel title = new JLabel("Title");
title.setVisible(true);
title.setForeground(Color.BLACK);
title.setFont(new Font("Monospaced", Font.BOLD, 32));
//title.setHorizontalAlignment(JLabel.CENTER);
title.setLocation((int)width/2-190,10);
title.setSize(250,100);
frame.add(title);

我注释掉了刚刚对齐它并且应该可以工作的代码。对于设置的位置,我正在使用:

static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
static double width = screenSize.getWidth();
static double height = screenSize.getHeight();

定义屏幕的参数,然后使用它来保持居中有点抽象。但是,很明显,监视器大小发生变化,10 次中有 9 次,我在此处为 setLocation 编写的代码不会将其置于屏幕中央。

我很好奇为什么这对我不起作用。是因为我没有将 JLabel 添加到 JPanel 中吗?我假设 JLabel 可以像放置在 JPanel 上一样放置在 JFrame 上。

编辑

我也试过了

frame.add(title,BorderLayout.CENTER);

并且与上面的其他 2 个选项有相同的结果。

最佳答案

这对我有用(注意:SwingConstants.CENTER,而不是 SwingConstraints.CENTER):

   public static void main( String[] args ) {
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
JFrame jf = new JFrame();
jf.addWindowListener( new WindowAdapter() {
@Override
public void windowClosing( WindowEvent arg0 ) {
System.exit( 0 );
}
} );
JLabel t = new JLabel( "Centered", SwingConstants.CENTER );
jf.add( t, BorderLayout.CENTER );
jf.setSize( 300, 300 );
jf.setVisible( true );
}
} );
}

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

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