GUI - Namensgenerator

unknown

Bekanntes Mitglied
Hallo zusammen

Könnte mir jemand sagen, wie man in einem GUI per Maus-Klick mehrere Rectangle mit verschiedenen Namen kreieren (z.B. rect1, rect2, etc...) kann, so dass man danach bei einem Maus-Klick auf das Rechteck den richtien Namen wieder erhält?

Gruss
 

XHelp

Top Contributor
Kannst ja eigene Klasse ableiten und die um "String name" erweitern. Der Rest ist genau so wie mit normalen Rectangles
 

unknown

Bekanntes Mitglied
Ich bin jetzt auf ein neues Problem gestossen.

Muss zwei verschiedene Figuren zeichnen lassen, und zwar Quadrate und Kreise.
Ich habe zwei Klassen, suqare und circle.

Wenn ich jetzt in diesen zwei Klassen ein Interface implementieren möchte, muss ich ja eine allgemeine Figur auswählen, wie z.B Shape. das Problem ist, dass ich dann gewisse Methoden wie translate nicht mehr zur Verfügung hätte.
Ich habe jetzt probiert anstatt Shape, direckt ein Rectangle zu returnieren, ich bekomme zwar keinen Error, aber es funktioniert trotzdem nicht.

Unten noch ein paar Zeilen von meinem Code.

Hat jemand eine Idee? :)

[Java]
import java.awt.Shape;
public interface MyShape {

Shape getShape();
}

=======
public class MySquare implements MyShape{

private Rectangle mySquare;


public Rectangle getShape()
{
return mySquare;
}
}

=======

public class shapeArrayComponent extends JComponent {

ArrayList<MyShape> shapeArray = new ArrayList<MyShape>();


public void moveBy(int dx, int dy) {

public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;

for(int i = 0; i < shapeArray.size(); i++)
{
g2.draw(shapeArray.get(i).getShape());
}
}


for(int i = 0; i < shapeArray.size(); i++)
{
if (shapeArray.get(i).getMove())
{
shapeArray.get(i).getShape().translate(dx, dy);
repaint();
}
}

}

}


[/Java]
 
Zuletzt bearbeitet:

unknown

Bekanntes Mitglied
klar, und zwar:

Java:
shapeArray mySquare = new shapeArray(x, y, 40, 20);
shape = new MySquare(mySquare, 1, 1);
shapeArray.add(shape);
repaint();
 

unknown

Bekanntes Mitglied
diese Zeile kann nicht ausgeführt werden, weil Shape offenbar keine Translate Methode hat.

Java:
shapeArray.get(i).getShape().translate(dx, dy);
 

unknown

Bekanntes Mitglied
kann mir wenigstens jemand sagen, wenn man eine Ellipse verschieben kann?
habe im Netz sehr lange gesucht, jedoch sind die Beispiele viel zu kompliziert.
Ich nehme an, man benötigt nicht 100 Zeile Code um eine Ellipse in Bewegung zu bringen oder?
 

bERt0r

Top Contributor
Aus meinem Beispiel:
Java:
AffineTransform af=new AffineTransform();
af.translate(b.x-a.x, b.y-a.y);
cs.setShape(af.createTransformedShape(selectedShape.getShape()));
 

Oben