- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
以下代码不起作用(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/
我有一个JComponent,它使用Textlayout绘制多行属性字符串,运行得很好: public static float drawMultiAttributedString(Graphics2
我正在使用 Java2D TextLayout 类以及 LineBreakMeasurer 和 AttributedCharacterIterator 将一段文本绘制到一个框中。文本被换行。 分析显示
以下代码不起作用(JLabel 未显示在屏幕上): JLabel label = new JLabel("Greetings everyone this is Macklemore");
所以,我正在使用 Java 教程中的代码绘制一段文本,但我不知道如何将文本对齐到右边距。 我只是在该案例的代码中加入了 attstring.addAttribute(TextAttribute.RUN
我在用户空间 (mm) 中定义了一个 java2d 图像来打印身份证。对像素的转换是通过对所需的 DPI(屏幕或打印)使用 AffineTransform。 我想将文本换行成多行,但 TextLayo
我一直在玩弄 Android 并尝试移植 Java 应用程序。以下是一些关于我遇到的问题的问题,并希望得到一些指导。 这是一个相当大的问题(而是多个问题)。但是,我并没有盲目地问他们,因为我已经研究了
我是一名优秀的程序员,十分优秀!