1

我正在尝试创建一个简单的应用程序,该应用程序显示一个红色圆圈,单击该圆圈时会在其下显示不同的消息。我相信这部分代码:

g.drawString("DO NOT PRESS", 100, 100);

已正确编码,但打开的窗口上未显示任何文本。这是到目前为止的完整代码:

import java.awt.Graphics;

import javax.swing.JFrame;

public class BigRedButton extends JFrame {

    public BigRedButton() {

        setTitle("Big Red Button");
        setSize(500, 500);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

    public void graphics(Graphics g) {

        g.drawString("DO NOT PRESS", 100, 100);
}
    public static void main(String[] args){

        new BigRedButton();
    }
}
4

1 回答 1

4
  1. 中没有这样的方法graphicsJFrame所以没有调用它。
  2. 您应该避免直接在顶级容器上绘画,除此之外,它们不是双缓冲的,并且在绘画时会闪烁。相反,您应该创建一个自定义组件(从类似的东西扩展JPanel)并覆盖它的paintComponent方法。
  3. 您应该花时间阅读Performing Custom PaintingPainting in AWT 和 Swing以及2D Graphics

此外,在阅读时,您应该阅读Initial Threads

修正案

正如 Andrew 所指出的,您应该使用@Override注释来确保您认为要覆盖的方法实际上是首先被覆盖的方法。这将阻止程序被编译,并节省大量试图弄清楚为什么事情没有按照您期望的方式工作的时间。

于 2013-06-21T02:11:11.100 回答