Hallo liebe Community,
ich bin grade dabei ein wenig zu programmieren und nun stehe ich irgendwie vor einem Problem. Ich kann dieses Problem irgendwie nicht lösen, vielleicht weiß ein erfahrenderer programmiere dort abhilfe.
Meine Klasse von der ich erbe :
Z.b Square die Farbe ändern.
Weiß jemand wie ich in der Methode
mein Objekt von Typ Square die Farbe ändern kann ? Ich kann ja nicht eine neue Instanz der Klasse Square erstellen und dort dann den Datentyp Graphics übergeben und dann die Farbe ändern, weil er sonst ja tausende machen würde.
Mit freundlichen Grüßen
Zidi
ich bin grade dabei ein wenig zu programmieren und nun stehe ich irgendwie vor einem Problem. Ich kann dieses Problem irgendwie nicht lösen, vielleicht weiß ein erfahrenderer programmiere dort abhilfe.
Meine Klasse von der ich erbe :
Java:
package de.marvin.oopLabor3;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GeometricObject extends JPanel implements MouseListener, MouseMotionListener
{
private static final long serialVersionUID = 1L;
private int fensterGroesse = 600;
private int randomAuswahl;
private int gridX = 8;
private int gridY = 8;
private final int MAXRANDOM = 5;
private final int MINRANDOM = 1;
private final int MAXCOLOR = 240;
private final int RedBorderSize = 40;
public void felderErstellung()
{
JFrame f = new JFrame("Laboraufgabe 3");
f.setSize(fensterGroesse,fensterGroesse);
f.setLocationRelativeTo(null);
f.setLayout(new GridLayout(gridX,gridY));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
for(int i = 0; i < (gridX*gridY);i++)
{
randomAuswahl = randInt(MINRANDOM,MAXRANDOM);
switch(randomAuswahl)
{
case 1:
f.add(new Square());
break;
case 2:
f.add(new Circle());
break;
case 3:
f.add(new Triangle());
break;
case 4:
f.add(new Pacman());
break;
case 5:
f.add(new MySpecialShape());
break;
}
}
f.setVisible(true);
}
protected int randInt(int min, int max)
{
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
protected int[] setRelativeSize()
{
int FillViereck = randInt(MINRANDOM,MAXRANDOM); //Muss gleiche größe haben, deshalb eine Variable
final Dimension dBorder = getSize(); // Bekomme die höhe und weite als Dimension Object back
final Dimension dFill = new Dimension(dBorder.width /FillViereck, dBorder.height /FillViereck); // Erstelle selbst ein neues Object
final Point p0Fill = new Point((dBorder.width - dFill.width) / 2,(dBorder.height - dFill.height) / 2); // X u Y Wert
int[] koordinaten = {p0Fill.x,p0Fill.y, dFill.width, dFill.height};
return koordinaten;
}
protected void kastenErstellen(Graphics g)
{
g.setColor(Color.RED); //Vorgegeben
g.drawRect(getWidth()/RedBorderSize,getHeight()/RedBorderSize,getWidth()-2,getHeight()-2); // Sonst sind die L
}
protected void setColor(Graphics g)
{
g.setColor(new Color(randInt(MINRANDOM,MAXCOLOR),randInt(MINRANDOM,MAXCOLOR),randInt(MINRANDOM,MAXCOLOR)));
}
public void mouseClicked(MouseEvent event)
{
System.out.println("hello");
}
public void mousePressed(MouseEvent event)
{
System.out.println("hello");
}
public void mouseReleased(MouseEvent event)
{
}
public void mouseEntered(MouseEvent event)
{
}
public void mouseExited(MouseEvent event)
{
}
//These are mousemoition
public void mouseDragged(MouseEvent event)
{
}
public void mouseMoved(MouseEvent event)
{
System.out.println("eigentlich rot");
}
}
Z.b Square die Farbe ändern.
Java:
package de.marvin.oopLabor3;
import java.awt.Graphics;
public class Square extends GeometricObject
{
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int[] koordinaten = setRelativeSize();
setColor(g);
g.fillRect(koordinaten[0], koordinaten[1], koordinaten[2],koordinaten[3]);
addMouseMotionListener(new GeometricObject());
kastenErstellen(g);
}
}
Weiß jemand wie ich in der Methode
Java:
public void mouseMoved(MouseEvent event)
{
System.out.println("eigentlich rot");
}
mein Objekt von Typ Square die Farbe ändern kann ? Ich kann ja nicht eine neue Instanz der Klasse Square erstellen und dort dann den Datentyp Graphics übergeben und dann die Farbe ändern, weil er sonst ja tausende machen würde.
Mit freundlichen Grüßen
Zidi