前提・実現したいこと
javaを最近学び始めたものです。
javaでドローエディタをつくっていたところ、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
DrawFrame.java:93:エラー: シンボルを見つけられません
f.draw(g);
^
シンボル: メソッド draw(Graphics)
場所: タイプFigureの変数 f
該当のソースコード
java
1import javax.swing.*; 2import java.awt.*; 3import java.awt.event.*; 4import java.util.*; 5 6class Figure{ 7 protected int x, y, width, height; 8 protected Color color; 9 10 public Figure(int x, int y, int w, int h, Color c){ 11 this.x = x; this.y = y; 12 width = w; height = h; 13 color = c; 14 } 15 16 public void setSize(int w, int h){ 17 width = w; height = h; 18 } 19 public void setLocation(int x, int y){ 20 this.x = x; this.y = y; 21 } 22 public void reshape(int x1, int y1, int x2, int y2){ 23 int newx = Math.min(x1, x2); 24 int newy = Math.min(y1, y2); 25 int neww = Math.abs(x1 - x2); 26 int newh = Math.abs(y1 - y2); 27 setLocation(newx,newy); 28 setSize(neww, newh); 29 } 30} 31 32class RectangleFigure extends Figure{ 33 public RectangleFigure(int x, int y, int w, int h, Color c){ 34 super(x, y, w, h, c); 35 } 36 public void draw(Graphics g){ 37 g.setColor(color); 38 g.drawRect(x, y, width, height); 39 } 40} 41 42class DrawModel extends Observable{ 43 protected ArrayList<Figure> fig; 44 protected Figure drawingFigure; 45 protected Color currentColor; 46 47 public DrawModel(){ 48 fig = new ArrayList<Figure>(); 49 drawingFigure = null; 50 currentColor = Color.red; 51 } 52 53 public ArrayList<Figure> getFigures(){ 54 return fig; 55 } 56 57 public Figure getFigure(int idx){ 58 return fig.get(idx); 59 } 60 61 public void createFigure(int x,int y){ 62 Figure f = new RectangleFigure(x, y, 0, 0, currentColor); 63 fig.add(f); 64 drawingFigure = f; 65 setChanged(); 66 notifyObservers(); 67 } 68 69 public void reshapeFigure(int x1, int y1, int x2, int y2){ 70 if(drawingFigure != null){ 71 drawingFigure.reshape(x1,y1,x2,y2); 72 setChanged(); 73 notifyObservers(); 74 } 75 } 76} 77 78class ViewPanel extends JPanel implements Observer{ 79 protected DrawModel model; 80 public ViewPanel(DrawModel m, DrawController c){ 81 this.setBackground(Color.white); 82 this.addMouseListener(c); 83 this.addMouseMotionListener(c); 84 model = m; 85 model.addObserver(this); 86 } 87 88 public void paintComponent(Graphics g){ 89 super.paintComponent(g); 90 ArrayList<Figure> fig = model.getFigures(); 91 for(int i = 0; i < fig.size(); i++){ 92 Figure f = fig.get(i); 93 f.draw(g); 94 } 95 } 96 public void update(Observable o, Object arg){ 97 repaint(); 98 } 99} 100 101class DrawController implements MouseListener, MouseMotionListener{ 102 protected DrawModel model; 103 protected int dragStartX,dragStartY; 104 public DrawController(DrawModel a){ 105 model = a; 106 } 107 public void mouseClicked(MouseEvent e){} 108 public void mousePressed(MouseEvent e){ 109 dragStartX = e.getX();dragStartY = e.getY(); 110 model.createFigure(dragStartX, dragStartY); 111 } 112 public void mouseDragged(MouseEvent e){ 113 model.reshapeFigure(dragStartX, dragStartY, e.getX(), e.getY()); 114 } 115 public void mouseReleased(MouseEvent e){} 116 public void mouseEntered(MouseEvent e){} 117 public void mouseExited(MouseEvent e){} 118 public void mouseMoved(MouseEvent e){} 119} 120 121class DrawFrame extends JFrame{ 122 DrawModel model; 123 ViewPanel view; 124 DrawController cont; 125 public DrawFrame(){ 126 model = new DrawModel(); 127 cont = new DrawController(model); 128 view = new ViewPanel(model, cont); 129 this.setBackground(Color.black); 130 this.setTitle("Draw Editor"); 131 this.setSize(500,500); 132 this.add(view); 133 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 134 this.setVisible(true); 135 } 136 public static void main(String[] args){ 137 new DrawFrame(); 138 } 139} 140
試したこと
シンボルを見つけられませんというエラーが過去に出た時はその箇所のタイプミスが原因だったのでそのような箇所がないか探したのですが、エラー周辺にタイプミスはないように思います。
もしタイプミスを私が見落としているだけでしたらお恥ずかしいのですが、もし他の原因があるようでしたら教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/05 16:22
2020/06/05 16:30
2020/06/05 16:51