Wie man einen Kreis zeichnen auf JPanel? Java 2D
Ich habe ein JPanel, für die ich ein Bild als hintergrund. Muss ich ziehen ein paar Kreise auf dem Bild. Jetzt werden die Kreise positioniert werden, basierend auf einem Koordinatensystem x,y, und die Größe basierend auf einige integer-Größe. Dies ist, was ich habe, da meine Klasse.
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
class ImagePanel extends JPanel {
private Image img;
CircleList cList; //added this
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
cList = new CircleList(); //added this
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
cList.draw(null); //added this
}
}
Wie kann ich erstellen Sie eine Methode kann dies durchgeführt?
- Ich habe gerade gesehen, dass Ellipse2D muss ein double oder ein float, ich denke, ich kann mit einer Doppel für die Größe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem Ansatz etwas ähnlich wie diese, in denen Sie eine Klasse
CircleList
zu halten, die Kreise und die zeichenroutine zu:Gut, Sie werden wahrscheinlich möchten, erstellen Sie eine ArrayList zum speichern der Informationen über die Kreise gezeichnet werden. Wenn dann die paintComponent () - Methode aufgerufen, die Sie gerade Durchlaufen der ArrayList und zeichnen Sie die Kreise.
Custom Painting Ansätze zeigt, wie dies getan werden könnte für ein Rechteck. Sie können den code ändern, der für ein oval wie gut würden Sie wahrscheinlich fügen Sie Methoden zum aktualisieren der Array mit den Informationen zum Standort eher als dynamisch.
Einfachste Sache zu tun wäre, um etwas entlang diesen Linien in Ihrem
paintComponent
Methode.getGraphics()
und verschieben Sie den code in daspaintComponent
Methode.Haben Sie sich
JXLayer
? Es ist eine wunderbare Bibliothek, die Ihnen erlaubt, die Schicht spezielle Malerei auf der Oberseite von jedem GUI-element in einer offensichtlichen Art und Weise. Ich glaube, dass wird in der Haupt-java-Bibliotheken für JDK7