You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BlueJ中使用Graphics绘图时被要求添加引用的问题求助

解决BlueJ中使用Graphics绘制矩形的问题

你的代码存在两个核心问题,导致绘图不生效且BlueJ提示错误:

  • 类继承了JFrame,但构造函数内又新建了独立的JFrame实例,你写的paint方法属于未被显示的test对象,而非打开的窗口,因此绘图逻辑不会触发。
  • 重写paint方法时未明确标注重写,可能因方法签名问题导致BlueJ识别异常。

修正后的代码如下:

import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.Color;

public class Test extends JFrame {  
    public Test() {
        // 直接使用当前类继承的JFrame实例,无需新建
        setSize(640, 480);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
        setVisible(true);
    }
    
    @Override // 明确标注重写父类的paint方法
    public void paint(Graphics g) {
        super.paint(g); // 调用父类paint方法,确保窗口基础渲染正常
        g.setColor(Color.BLACK);
        g.drawRect(100, 100, 200, 200);
    }

    public static void main(String[] args) {
        // 创建类实例启动窗口
        new Test();
    }
}

关键修正说明:

  • 移除构造函数中多余的JFrame frame=new JFrame();,直接操作当前继承的JFrame,让paint方法与显示的窗口绑定。
  • 添加@Override注解,明确告知编译器这是重写父类方法,解决BlueJ的引用提示问题。
  • 调用super.paint(g)是必要步骤,它会完成窗口背景、边框等默认绘制,避免你的矩形覆盖基础渲染。
  • 添加main方法,BlueJ中可直接运行该方法启动程序。

内容的提问来源于stack exchange,提问作者Onyx 1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:20:03