gpt4 book ai didi

java - 在为其创建 TextLayout 后将 JLabel 添加到 JFrame

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:19 24 4
gpt4 key购买 nike

以下代码不起作用(JLabel 未显示在屏幕上):

    JLabel label = new JLabel("Greetings everyone this is Macklemore");

Font f = label.getFont();
String str = label.getText();
FontRenderContext frc = new FontRenderContext(null, true, true);

TextLayout tl = new TextLayout(str, f, frc);

add(label);

虽然此代码确实如此(JLabel 确实显示在屏幕上):

    JLabel label = new JLabel("Greetings everyone this is Macklemore");

Font f = label.getFont();
String str = label.getText();
FontRenderContext frc = new FontRenderContext(null, true, true);

add(label);

TextLayout tl = new TextLayout(str, f, frc);

为什么 TextLayout 会干扰“add(...)”? (顺便说一句,这是在扩展 JFrame 的类中进行的)。这并不重要,因为无论如何我都能正常工作,但我仍然有点好奇到底是什么原因造成的。

编辑:代码的其余部分在不起作用的情况下看起来像这样(这包括建议的更改):

public class Main {

public static void main(String[] args) {
new Main();
}

public Main() {
new Window(800, 400, "Project");
}

}


import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;

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

public class Window extends JFrame {

private static final long serialVersionUID = -8255319694373975038L;

public Window(int width, int height, String title) {

setPreferredSize(new Dimension(width, height));
setMaximumSize(new Dimension(width, height));
setMinimumSize(new Dimension(width, height));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
setTitle(title);
setVisible(true);
setLayout(new FlowLayout());

JLabel label = new JLabel("Greetings everyone this is Macklemore");

//suggested change
Font f = new Font(label.getFont().getAttributes());
String str = label.getText();
FontRenderContext frc = new FontRenderContext(null, true, true);

TextLayout tl = new TextLayout(str, f, frc);

add(label);

}
}

附注我真的很讨厌发布这么长的代码,但现在我确实需要解决这个问题。

最佳答案

事实证明这一切都与 setVisible(true) 命令有关。如果最后不这样做,就会开始出现这样的问题。虽然所描述的行为仍然很奇怪,但这个问题至少有了答案。

关于java - 在为其创建 TextLayout 后将 JLabel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199614/

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