gpt4 book ai didi

java - 尝试使用 drawString 方法打印名称

转载 作者:行者123 更新时间:2023-11-30 11:37:57 25 4
gpt4 key购买 nike

目前我只是在学习一些基础教程。当前的人想要一个图形程序,可以用红色绘制您的名字。我试图制作一个扩展 JComponent 的 NameComponent 类,并使用 drawString() 方法来执行此操作:

import java.awt.Graphics2D;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JComponent;

public class NameComponent extends JComponent {

public void paintMessage(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

g2.setColor(Color.RED);
g2.drawString("John", 5, 175);

}
}

并使用一个使用 JFrame 显示名称的 NameViewer 类:

import javax.swing.JFrame;

public class NameViewer {

public static void main (String[] args) {

JFrame myFrame = new JFrame();
myFrame.setSize(400, 200);
myFrame.setTitle("Name Viewer");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
NameComponent myName = new NameComponent();
myFrame.add(myName);

myFrame.setVisible(true);
}
}

...但是当我运行它时,框架出现空白!谁能告诉我我在这里做错了什么?

非常感谢!

最佳答案

您需要覆盖方法 paintComponent 而不是 paintMessage。在方法上添加 @Override 注释将表明 paintMessage 不是 JComponent 的标准方法。此外,您可能希望减少 drawString 中的 y 坐标,因为由于 JFrame 的额外装饰尺寸,文本目前不可见。最后记得调用super.paintComponent重新绘制组件的背景。

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.RED);
g2.drawString("John", 5, 100);
}

参见:Painting in AWT and Swing

关于java - 尝试使用 drawString 方法打印名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825582/

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