Я задал подобный вопрос некоторое время назад здесь, но не получил ответа.Первоначальный вопрос был об изменении цвета фигуры после нажатия на нее.Но я озадачен тем, как вообще получить доступ к фигуре после ее отрисовки.
Это мой метод paintComponent
@Override
protected void paintComponent(Graphics graph) {
super.paintComponent(graph);
Graphics2D g = (Graphics2D) graph;
// smooth graphics
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// moving to the middle of the panel
g.translate(this.getWidth()/2, this.getHeight()/2);
// painting colored arcs
for(int i = 0; i < 4; i++) {
g.setColor(dimColors[i]);
g.fill(arcs[i]);
}
// painting borders
g.setColor(Color.BLACK);
g.setStroke(new BasicStroke(5F));
g.drawLine(-98, 0, 98, 0);
g.drawLine(0, -98, 0, 98);
g.draw(circle);
// painting central white circle
g.setColor(Color.WHITE);
g.fill(smallCircle);
g.setColor(Color.BLACK);
g.draw(smallCircle);
}
массив arcs [] содержит набор нарисованных Arc2Dна панели.Мой вопрос сейчас, если я хочу изменить цвет, например, дуги [0], как мне это сделать?
Спасибо!
РЕДАКТИРОВАТЬ: у меня теперь есть это событие MouseAdapter
private class MyMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
Component c = getComponentAt(p);
Graphics g = c.getGraphics();
dimColors[1] = Color.RED;
paintComponent(g);
}
}
И это работает, он меняет цвет дуги [1], потому что для arcs [1] в качестве цвета при рисовании установлен dimColors [1].
Однако я все еще могу 't выяснить, как проверить, была ли нажата правая дуга.Прямо сейчас вы просто нажимаете в любом месте графической панели, и она меняет цвет этой конкретной дуги