java.das awt.Grafik Farbe ändern nach Zeichnung
Ich habe eine ähnliche Frage vor einer Weile hier, aber habe nicht eine Antwort bekommen. Die ursprüngliche Frage war über das ändern der Farbe, der Form nach auf es klicken. Aber ich bin verwirrt über, wie Sie auf die Form an, nachdem es gezeichnet ist.
Dies ist meine paintComponent Methode
@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);
}
den arcs [] - array enthält eine Reihe von Arc2D ist, die gezeichnet werden auf dem Bedienfeld. Meine Frage ist jetzt, wenn ich die Farbe ändern möchten, zum Beispiel Bögen[0], wie mache ich das?
Dank!
EDIT: ich habe jetzt diese MouseAdapter Veranstaltung
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);
}
}
Und es funktioniert, es ändert sich die Farbe des arc[1], weil Bögen[1] hat dimColors[1] als Farbe beim zeichnen.
Aber ich kann immer noch nicht herausfinden, wie um zu prüfen, ob das Recht arc geklickt wurde. Jetzt, klicken Sie einfach irgendwo auf die Grafik panel und es ändert sich die Farbe des jeweiligen arc
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies nicht die Antwort auf Ihre frühere Frage, es ist aber nicht die Antwort auf Ihre Frage, klicken Sie auf Erkennung. Dazu verwenden Sie am besten Graphics2D, weil es ist viel einfacher zu schreiben als die meisten anderen Optionen. Hier ist ein Beispiel:
Zunächst erstellen wir unsere Graphics2D Rechteck rect.
Und dann überschreibt man die paintComponent-Methode, und erstellen Sie unsere new Rectangle2D.Doppel-Objekt.
Wir haben dann füllen Sie das Rechteck mit g2d.fill() und fügen Sie dann ein Maus-listener auf dem JPanel.
Schließlich müssen wir sehen, ob das Rechteck enthält den Punkt, wo der Benutzer geklickt hat. Um dies zu tun, einfach nur sehen, ob das Rechteck, das wir geschaffen, enthält der Benutzer auf den Speicherort mit den Rectangle2D.Doppel-s contains(int x, int y) - Methode. Das ist es!
Einer Linie (oder was auch immer) existiert nur als ein Haufen von Pixel, die wurden lackiert in der original Farbe. Seine Farbe zu ändern müssen Sie ändern die aktuelle Farbe und zeichnen Sie es wieder.