0
我想用一個簡單的矩形網格來製作一個程序,如果用戶點擊一個矩形,它會填充黑色。我遇到的問題是我的mouseClicked方法不能訪問我的paintComponent方法,所以我得到一個錯誤。使用MouseListeners繪畫?
下面是相關代碼:
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.setColor(Color.BLACK);
for(Rectangle2D rect : squares) {
g2.draw(rect);
}
}
public void mouseClicked(MouseEvent e) {
if((e.getX()>RECT_WIDTH && e.getX()<RECT_WIDTH+(game.getSize()-1)*BOX_DIM) && (e.getY()>RECT_HEIGHT && e.getY()<RECT_HEIGHT+(game.getSize()-1)*BOX_DIM)) {
Point2D point = new Point2D.Double(e.getX(), e.getY());
Rectangle2D rect = findRect(point);
g.setColor(Color.BLACK);
g.fill(rect);
repaint();
}
}
public Rectangle2D findRect(Point2D p) {
for(Rectangle2D rect : squares) {
if(rect.contains(p)) {
return rect;
}
}
return null;
}
「廣場」 是rectangle2Ds的ArrayList。錯誤發生在'g'的mouseClicked方法中,因爲eclipse找不到g。謝謝你的幫助!