Graphics 作为一个抽象类,有一堆抽象方法。抽象方法是未在抽象类中定义但必须在最终子类中定义的方法。如果您不想立即定义抽象方法,则可以使子类成为抽象类,但如果您希望可以实例化该类,则最终必须定义方法。由于 dispose() 是一个抽象方法,因此您需要说明 dispose() 应该在子类中做什么,否则通过在 {} 之间不留任何内容来欺骗计算机认为您正在告诉 dispose 要做什么。
我有一个类似的问题,我通过创建类 SimpleGraphics 解决了它。如果您让 myGraphics 类扩展 SimpleGraphics,它可能会解决您的问题。
import java.awt.*;
import javax.swing.JFrame;
import java.awt.image.ImageObserver;
import java.text.AttributedCharacterIterator;
public class SimpleGraphics extends Graphics{
public void clearRect(int x, int y, int width, int height){};
public void clipRect(int x, int y, int width, int height){};
public void copyArea(int x, int y, int width, int height, int dx, int dy){};
public void dispose(){};
public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle){};
public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer){return false;};
public boolean drawImage(Image img, int x, int y, ImageObserver observer){return false;};
public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer){return false;};
public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer){return false;};
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer){return false;};
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer){return false;};
public void drawLine(int x1, int y1, int x2, int y2){};
public void drawOval(int x, int y, int width, int height){};
public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints){};
public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints){};
public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight){};
public void drawString(AttributedCharacterIterator iterator, int x, int y){};
public void drawString(String str, int x, int y){};
public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle){};
public void fillOval(int x, int y, int width, int height){};
public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints){};
public void fillRect(int x, int y, int width, int height){};
public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight){};
public Shape getClip(){return null;};
public Rectangle getClipBounds(){return null;};
public Color getColor(){return null;};
public Font getFont(){return null;};
public FontMetrics getFontMetrics(Font f){return null;};
public void setClip(int x, int y, int width, int height){};
public void setClip(Shape clip){};
public void setColor(Color c){};
public void setFont(Font font){};
public void setPaintMode(){};
public void setXORMode(Color c1){};
public void translate(int x, int y){};
public Graphics create(){return null;};
}