您遇到的问题是您直接在框架顶部绘画。框架还包括框架边框,因此位置0、0(或者在您的情况下为10、10)实际上隐藏在框架边框下。
你可以在这里看到更多关于它的信息。
相反,您应该绘制到Canvas并将其添加到框架中
import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.frame;import java.awt.Graphics;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Badframe { public static void main(String[] args) { new Badframe(); } public Badframe() { Application app = new Application(); app.setSize(new Dimension(640, 480)); app.setTitle("This is a test"); app.setLayout(new BorderLayout()); app.add(new MyCanvas()); app.setVisible(true); } class MyWindowAdapter extends WindowAdapter { public void windowClosing(WindowEvent we) { System.exit(0); } } public class MyCanvas extends Component { @Override public void paint(Graphics g) { super.paint(g); System.out.println("Hey hey !"); g.drawString("Test", 10, 10); } } class Application extends frame { public Application() { addWindowListener(new MyWindowAdapter()); } }}想到的下一个问题是,为什么要进行AWT?该API已被广泛使用,有利于Swing。如果没有别的,它会自动双缓冲;)
ps-您可能还会发现一些有趣的2D
图形,尤其是关于文本的讨论



