我正在学习Java中的图形化内容,并希望显示文本。如我所读,drawString()
是实现此目的的标准方法。我绘制字符串的代码是:
import java.awt.*;
import javax.swing.*;
public class TextDisplay extends JPanel{
public void paint(Graphics g) {
g.drawString("My Text", 10, 20);
}
}
执行此操作的类是:
import javax.swing.*;
public class Main {
public static void main(String[] args) {
TextDisplay d = new TextDisplay();
JFrame f = new JFrame();
f.getContentPane().add(d);
f.setSize(200,200);
f.setVisible(true);
}
}
这将按预期生成一个带有文本“我的文本”的窗口。现在的问题是:如何绘制任何字符串?为此,我必须将String写入paint()
方法,但是我想从其他地方将其作为变量输入。
请勿使用paint()
或直接画入JFrame
。拉入JPanel
并覆盖paintComponent()
。要绘制特定的String,请将其存储在实例字段中,然后调用repaint()
。您可能还需要检查LineMetrics
和FontMetrics
以使字符串正确居中。
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString(mystring, x, y);
}