Hallo Leute, ich bin bereits fix und fertig vom Forenbeiträge durchforsten konnte aber leider nix passendes für mein Problem finden.
Ich habe mir eine paintcomponent Methode geschrieben die mir für ein Spielbrett ein rundes Feld printen soll, dass funktioniert soweit auch ganz gut nur suche ich eine Möglichkeit die Felder mit verschiedenen Farben zu zeichnen. Aber hier erstmal der Code.
Meine Idee war beim erschaffen eines Objektes der Klasse Circle einen String mitzugeben um mit diesen durch equalscontent die passende Farbe auswählen zu können.
So wie es aussieht wird paintcomponent() aber erst zum Schluss aufgerufen und nimmt damit vom zuletzt erstellten CirclesObjekt den String und damit die jeweilige Farbe. Dadurch haben dann alle Felder diese Farbe.
Gibt es eine Möglichkeit irgendwie durch repaint() ihn nach jedem Objektentwurf zeichnen zu lassen?
Oder ist das der komplett falsche Ansatz und garnicht realisierbar.
Ich hoffe irgendwer hat einen kleinen Tip für mich. Vielen Dank schonmal.
Ich habe mir eine paintcomponent Methode geschrieben die mir für ein Spielbrett ein rundes Feld printen soll, dass funktioniert soweit auch ganz gut nur suche ich eine Möglichkeit die Felder mit verschiedenen Farben zu zeichnen. Aber hier erstmal der Code.
Java:
package gui;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.color.ColorSpace;
import java.awt.geom.Ellipse2D;
class Circles extends JPanel
{
public static String string;
public Circles(String string)
{
this.string = string;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int rr;
int gg;
int b;
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(new Color(rr = 204, gg = 164, b = 96));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
g2d.setColor(Color.BLACK);
int mx = 30;
int my = 30;
int r = 30;
Ellipse2D.Double außenkreis = new Ellipse2D.Double(mx - r, my - r, 2 * r, 2 * r);
g2d.draw(außenkreis);
g2d.fill(außenkreis);
if(string.contentEquals("red"))
{
g2d.setColor(Color.RED);
}
if(string.contentEquals("white"))
{
g2d.setColor(Color.WHITE);
}
if(string.contentEquals("yellow"))
{
g2d.setColor(Color.YELLOW);
}
if(string.contentEquals("blue"))
{
g2d.setColor(Color.BLUE);
}
mx = 30;
my = 30;
r = 27;
Ellipse2D.Double kreis = new Ellipse2D.Double(mx - r, my - r, 2 * r, 2 * r);
g2d.draw(kreis);
g2d.fill(kreis);
}
public static void setString(String string)
{
Circles.string = string;
}
Meine Idee war beim erschaffen eines Objektes der Klasse Circle einen String mitzugeben um mit diesen durch equalscontent die passende Farbe auswählen zu können.
So wie es aussieht wird paintcomponent() aber erst zum Schluss aufgerufen und nimmt damit vom zuletzt erstellten CirclesObjekt den String und damit die jeweilige Farbe. Dadurch haben dann alle Felder diese Farbe.
Gibt es eine Möglichkeit irgendwie durch repaint() ihn nach jedem Objektentwurf zeichnen zu lassen?
Oder ist das der komplett falsche Ansatz und garnicht realisierbar.
Ich hoffe irgendwer hat einen kleinen Tip für mich. Vielen Dank schonmal.