【发布时间】:2013-03-30 17:37:08
【问题描述】:
我正在尝试创建一个 JFrame,它以从 4 到 24 的每个偶数字体大小显示一个字符串。为此,我正在尝试执行一个 for 循环,该循环创建一个使用 @987654325 的 drawString @ 每次都会增加 +2 字体大小。通过获取前一个的getHeight() 并将其添加到变量y 中,试图将下一个drawString 放在前一个的下方。但是,当程序运行时,JFrame 是空的。
我哪里出错了?
import javax.swing.*;
import java.awt.*;
public class JFontSizeDemo extends JFrame {
int x = 10;
int y = 40;
int heightOfFont;
public void paint(Graphics g) {
super.paint(g);
for(int size = 4; size <= 24; size += 2) {
g.setFont(new Font("Arial", Font.BOLD, size));
g.drawString("Name", x, y);
heightOfFont = g.getFontMetrics().getHeight();
y += heightOfFont;
}
}
public static void main(String[] args) {
JFontSizeDemo frame = new JFontSizeDemo();
frame.setSize(300, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
【问题讨论】:
-
对我来说很好用。你在用什么?规格?
-
这个example,也许能解释一下关于话题的问题。为此,您需要paintImmediately(...)
-
@GagandeepBali 你试过代码了吗?它运行了!
-
@joeyrohan :有时人们可以看到或听到的并不是正确的事情 :-) 我想它只会立即显示最后一个值,而不会显示中间字符串文字值。是的,它确实可以运行,虽然在我这边也是 :-)
-
@GagandeepBali 当然直接在
JFrame上绘画不是一件正确的事情,但我的意思不是关于上帝/坏东西。”但是当程序运行时 JFrame 是空的”。但我确实得到了 OP 想要的东西:p
标签: java swing jframe drawstring