Collection Framework

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Für ein kleines Zeichenprogramm sollen unter anderem Kreise, Linien, Ovale etc. auf einem Image gezeichnet werden...

Nun funktioiert das meißte so schon, allerdings kann man einen falsch eingezeichneten Kreis nicht wieder
rückgänging machen bzw. löschen.

Das soll geschehen, in dem die Kreise in ein "Array" gespeichert, werden, so dass man indiziert auf die einzelnen Kreise zugreifen kann...

Dazu hab ich mir das Collection Framework angesehen und denke von "Collection", "Set", "Queue", "Map" wäre das beste einfach "List"...aber irgendwie fehlt mir der Ansatz dazu...

Vielleicht findet ja jemand die Zeit sich dies anzusehen und mir zu empfehlen, wie ich das angehen könnte...
Also rein von der Logik her, die LinkedList wird mit einem Objekt, zum Beispiel Kreis gefüllt, so bald einer erzeugt wird.
Das erste Problem was bei mir auftaucht, woher weiß ich wie groß die Liste ist, wenn ich nicht weiß, wie wieviele Kreise der Benutzer aufziehen will...

Naja...hier auf jeden fall der jetztige Stand der Dinge:

Mein JFrame:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JPanel;

class MeinJFrame extends JPanel
{
private Kreise kreis=null;
private Image image; //Auf dieses Image werden die Kreise gezeichnet
private Graphics2D g2; //Das ist der Graphics Kontext vom Image

MeinJFrame()
{
addMouseListener(new MouseAdapter()
{
//Die Methode mousePressed des MouseListeners wird "definiert":
public void mousePressed(MouseEvent event)
{
//Beim drücken der Maustaste wird ein neuer Kreis mit den Eigenschaften
//Radius=0 und Farbe=null erzeugt:
kreis=new Kreise(0, null);
//X,-und Y-Koordinaten des Events (Maustaste gedrückt) werden festgehalten:
kreis.x=event.getX();
kreis.y=event.getY();
//Mittelpunkt des Kreises mit einem Radius von 1 und der Farbe grün
//zeichnen, dient als Anhaltspunkt für das Aufziehen:
kreis.color=Color.green;
kreis.radius=1;
kreisZeichnen();
}
//Die Methode mouseReleased des MouseListeners wird "definiert":
public void mouseReleased(MouseEvent event)
{
//Die Farbe des Kreises wird bestimmt:
kreis.color=Color.red;
//Der Mittelpunkt wird festgelegt(Dort wo die Maustaste gedrückt wurde:
Point mittelpunkt=new Point(kreis.x, kreis.y);
//Der Radius vom Kreis wird gesetzt=Distanz zwischen Mittelpunkt und dem Punkt beim loslassen der Maustaste:
kreis.radius=(int)(mittelpunkt).distance(event.getPoint());
//Kreis zeichnen:
kreisZeichnen();
}
});
}

public void paintComponent(Graphics g)
{
//paintComponent zeichnet einfach immer nur das Image,
//nur so bleibt die Zeichnung bei jedem "repaint" erhalten:
if (image==null)
{
image=createImage(getWidth(), getHeight());
g2=(Graphics2D)image.getGraphics();
}
Rectangle r=g.getClipBounds();
g.drawImage(image, r.x, r.y, r.width+r.x, r.height+r.y, r.x, r.y, r.width+r.x, r.height+r.y, null);
}
//Folgende Aktionen werden ausgeführt, wenn die Maustaste gedrückt wird:
public void mousePressed(MouseEvent event)
{
//Beim drücken der Maustaste wird ein neuer Kreis mit den Eigenschaften
//Radius=0 und Farbe=null erzeugt:
kreis=new Kreise(0, null);
//X,-und Y-Koordinaten des Events (Maustaste gedrückt) werden festgehalten:
kreis.x=event.getX();
kreis.y=event.getY();
//Mittelpunkt des Kreises mit einem Radius von 1 und der Farbe grün
//zeichnen, dient als Anhaltspunkt für das Aufziehen:
kreis.color=Color.green;
kreis.radius=1;
kreisZeichnen();
}
//Folgende Aktionen werden ausgeführt, wenn die Maustaste losgelassen wird:
public void mouseReleased(MouseEvent event)
{
//Die Farbe des Kreises wird bestimmt:
kreis.color=Color.red;
//Der Mittelpunkt wird festgelegt(Dort wo die Maustaste gedrückt wurde:
Point mittelpunkt=new Point(kreis.x, kreis.y);
//Der Radius vom Kreis wird gesetzt=Distanz zwischen Mittelpunkt und dem Punkt beim loslassen der Maustaste:
kreis.radius=(int)(mittelpunkt).distance(event.getPoint());
//Kreis zeichnen:
kreisZeichnen();
}
//Die Methode zum zeichnen eines Kreises:
private void kreisZeichnen()
{
//Die Farbe des Kreises wird bestimmt:
g2.setColor(kreis.color);
//Der Kreis wird gefüllt:
g2.fillOval(kreis.x-kreis.radius, kreis.y-kreis.radius, kreis.radius*2, kreis.radius*2);
//Da normalerweise die Ausgabe nicht weichgezeichnet ist, setzen wir dies durch setRenderingHint:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
repaint();
}
}

------------------------------------------------------------------------------------------------------------------------------

Die Klasse Kreise:

import java.awt.Color;//Die Klasse Kreise, definiert die Eigenschaften eines solchen:
class Kreise { int x;
int y;
int radius;
Color color;

Kreise(int radius, Color color)
{
this.radius=radius;
this.color=color;
}
}

-------------------------------------------------------------------------------------------------------------------------------

Und die Main():

import javax.swing.JFrame;

class KreisTester extends JFrame
{
//Einstiegspunkt in das Programm:
static public void main(String[] args)
{
//Ein neues Fenster wird erzeugt und sichtbar gemacht:
JFrame mainFrame=new KreisTester();
mainFrame.setVisible(true);
}
//Das Fenster wird definert:
public KreisTester()
{
//Titel:
setTitle("Hausaufgabe Kreis aufziehen");
//Größe:
setSize(700,600);
//Inhalt:
getContentPane().add(new MeinJFrame());
}
}
 
G

Guest

Gast
Also das war eigentlich das größte Problem...aber wenn die Liste Ihre Größe alleine verändert, scheint es ja gar nicht so kompliziert zu sein, wie ich dachte...
Versuche grade rauszufinden, wie man einer neu erzeugten Liste Objekte anhängt...
Da fehlt mir irgendwie die Syntax für...aber gucke grade bei Java ist eine Insel und Internet, mal sehen...
Dann müsste es eigentlich schon so gut wie klappen...zumindest hab ich die Kreise dann in meiner Liste...das ist schonmal die halbe Miete...
 
G

Guest

Gast
Allerbesten dank, das hat funktioniert... :D

Jetzt bin ich dabei die erzeugten und der Liste hinzugefügten Kreise im Panel bzw. auf Image zu zeichnen.
dazu will ich ne For-Schleife benutzen muss aber erstmal die Größe des Feldes bzw. der Liste ruas kriegen.

Das es mit get.Length hier nicht geht hab ich irgendwie schon gemerkt, aber getSize() get auch nicht!?

Wie kriege ich dir Länge (Anzahl der Objekte) der Liste raus?
Müsste dann eigentlich alleine klar kommen!

*sich hier vorab schonmal für die Hilfe bedanken tut*
 
G

Guest

Gast
Komisch irgendwie will er das nicht...er kommt bei mir nur mit size() klar...aber ohne get() :p
 
G

Guest

Gast
Ja, die gute alte API! :) So.... *sich freut* Jetzt kommt die Methode LöscheLetzenKreis() :)
Aber denke mal jetzt komm ich klar!
Danke nochmal for the help!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Frage zu Vererbung beim Collection-Framework Java Basics - Anfänger-Themen 4
M Source Code von Collection Framework, etc. Java Basics - Anfänger-Themen 3
Encera Garbage Collection Java Basics - Anfänger-Themen 9
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
M Collection.sort sortiert nicht Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Collections Werte aus .txt in einer Collection speichern Java Basics - Anfänger-Themen 11
M Collection Aufgabe Java Basics - Anfänger-Themen 22
Arif Collections Unkonstruiertes Objekt einer Collection hinzufügen Java Basics - Anfänger-Themen 2
W Collection-Problem Java Basics - Anfänger-Themen 35
P Klassen In einer Autoklasse das Objekt Auto mittels Collection Speichern Java Basics - Anfänger-Themen 4
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
J Objekt in Collection speichern Java Basics - Anfänger-Themen 4
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
J Collection Objekt Java Basics - Anfänger-Themen 3
T Collections Zusammengehörende Strings in einer Collection Java Basics - Anfänger-Themen 2
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
B Collections Collection soll nur einen bestimmten Datentyp aufnehmen Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
K Collections Collection für 12 mio Strings Java Basics - Anfänger-Themen 7
Y Collection der eigenen Klasse Java Basics - Anfänger-Themen 10
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
R Passende Collection gesucht Java Basics - Anfänger-Themen 11
G Collections Wahl der richtigen Collection Java Basics - Anfänger-Themen 11
O Frage zu Verständnis von Collection Java Basics - Anfänger-Themen 4
D Scala Iterable zu Java Collection konvertieren Java Basics - Anfänger-Themen 3
D Frage zu Collection und deren Anwendung Java Basics - Anfänger-Themen 2
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
J Collection soll übergeben werden... Java Basics - Anfänger-Themen 7
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
B Iterator und Collection Java Basics - Anfänger-Themen 11
G Java Collection Frameworks Java Basics - Anfänger-Themen 5
D Collection Konvertieren Java Basics - Anfänger-Themen 7
K Datentypen Über Collection iterieren bringt fehler Java Basics - Anfänger-Themen 8
K OOP Aus Collection Objekte bestimmter Subklassen entfernen Java Basics - Anfänger-Themen 7
S Welche Collection? Java Basics - Anfänger-Themen 5
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
W Wie kann ich auf Object meiner Collection zugreifen Java Basics - Anfänger-Themen 7
J Collection Vector Java Basics - Anfänger-Themen 8
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Collection in collection Java Basics - Anfänger-Themen 6
T Collection von Objekten verschiedener Klassen Java Basics - Anfänger-Themen 4
J Collection ArrayList und mit erweitertem for iterieren Java Basics - Anfänger-Themen 7
J Probleme mit Collection ArrayList Java Basics - Anfänger-Themen 2
C Collection vs. LinkedList, Abstrakt vs. Konkret Java Basics - Anfänger-Themen 9
G Collection<BufImg> in Datei speichern Java Basics - Anfänger-Themen 8
A Collection auslesen ohne Objekttyp zu kennen? Java Basics - Anfänger-Themen 11
G Collection<Strings> - Liste von Strings verwalten Java Basics - Anfänger-Themen 9
A Struts: Über Collection iterieren mir Taglibs? Java Basics - Anfänger-Themen 13
S Collection<Typ> sort Java Basics - Anfänger-Themen 4
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
M Object [][] ist nicht vom Typ Collection? Java Basics - Anfänger-Themen 3
S Collection wie LinkedHashMap Java Basics - Anfänger-Themen 7
J LinkedList, Collection, ArrayList, List. was denn bitte? Java Basics - Anfänger-Themen 6
S Collection Sort Java Basics - Anfänger-Themen 15
A Welche Collection? Java Basics - Anfänger-Themen 13
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
S Collection in einer Collection Java Basics - Anfänger-Themen 5
A Welche Collection soll ich nehmen? Java Basics - Anfänger-Themen 4
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
K Collection und Iterator Java Basics - Anfänger-Themen 7
I Bestimmte Variablen in Collection Classes Java Basics - Anfänger-Themen 2
vogella Cast from Collection.toArray to String[] Java Basics - Anfänger-Themen 2
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
S Mit Collection<int[]> umgehen Java Basics - Anfänger-Themen 2
S welche collection ? String und object Java Basics - Anfänger-Themen 5
M gibt es eine collection mit definierter maximaler größe Java Basics - Anfänger-Themen 4
V Mehrdimensionale Collection? Java Basics - Anfänger-Themen 4
U JSTL: Collection auslesen mit forEach Java Basics - Anfänger-Themen 1
A Interface Collection implementieren? Java Basics - Anfänger-Themen 4
I Collection sortieren, ":" höchste "Priorität& Java Basics - Anfänger-Themen 4
P Äquivalent zu Visual Basic Collection Java Basics - Anfänger-Themen 6
G Collection, aber welche? Java Basics - Anfänger-Themen 6
A Collection<String> Java Basics - Anfänger-Themen 4
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
E Strings in Collection Java Basics - Anfänger-Themen 6
R welche Collection nehmen? Java Basics - Anfänger-Themen 4
P Collection Vector speichern mittels Serialisierung? Java Basics - Anfänger-Themen 2
megachucky Collection Vector: ausgabe klappt nicht richtig Java Basics - Anfänger-Themen 9
T Welche Collection nehmen? HashMap? Java Basics - Anfänger-Themen 4
L-ectron-X Speicher freigeben - Garbage Collection Java Basics - Anfänger-Themen 6
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
T Neuling erbittet Meinung zu Framework Java Basics - Anfänger-Themen 11
M Welches Framework für kleine WebApp nutzen? Java Basics - Anfänger-Themen 6
O Framework/Library Java Basics - Anfänger-Themen 5
O Framework Java Basics - Anfänger-Themen 2
N Umgang mit Domain Framework Java Basics - Anfänger-Themen 2
Z Threads Executor Framework - Aufgabe auf n Threads aufteilen Java Basics - Anfänger-Themen 10
D Erste Schritte Welches Framework passt zu mir ? Java Basics - Anfänger-Themen 1
M Java Media Framework installieren - Win 7 Java Basics - Anfänger-Themen 6
F Java Media Framework Java Basics - Anfänger-Themen 5
D script.aculo.us requires the Prototype JavaScript framework >= 1.6.0.2 Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben