在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
相关产品推荐
相关产品推荐

