gezeichnete Graphiken speichern und wieder anzeigen

noch_anfänger

Aktives Mitglied
Hallo,

ist es möglich, auf dem JPanel gezeichnete Graphiken zu speichern und später noch Mal (mehrere Mals) zu zeigen?
Es sollte so sein:

ich wähle im JSpinner einen Wert und zeichne dazu einige Zechnungen auf dem JPanel. Es geht nur um einfaches Zeichnen, nicht um Rotieren oder so. Wenn ich einen neuen Wert im JSpinner wähle, muss die vorherige Graphik gespeichert werden. Zu dem neu gewählten Wert zeichne ich etwas neues. Wenn ich aber den vorherigen Wert im Spinner wähle, und dazu etwas schon gezeichnet wurde, muss die entsprechende (vorherige) Graphik angezeigt werden. JSpinner hat 45 Werte, zu jedem sollte man die Zeichnungen speichern können. Ist das möglich?
Man kann alles Vorhergezeichnetes (alle gespeicherte Zeichnungen) mit einem Knopfdruck löschen.

Kann man vielleicht das ganze aktuelle JPanel mit allen gezeichneten Objekten speichern und beim Bedarf anzeigen?
 

Niki

Top Contributor
du wirst ja die Objekte die du zeichnest in irgendeiner Collection haben und diese Collection im JPanel in der paintComponent Methode darstellen.
Du musst dir eigentlich nur die Collection in einer Map zu deinem Wert speichern, und wenn dieser Wert im Spinner ausgewählt wird holst du dir über den Key die Collection, übergibst die Collection an den JPanel und dieser macht dann einfach ein repaint
 

Dit_

Bekanntes Mitglied
Deine Zeichnungen sei es Linie, Kreis oder sonstiges sind ja irgendwelche Objekte zum Beispiel die Oberklasse könnte Figur sein. Du könntest eine Neue Klasse einführen die Komposition heisst und auch von der Klasse Figur erbt. Hast du eine Zeichnung fertiggezeichnet, ist es aufjeden Fall eine Figur. Jetzt Könntest du in einer HashTabelle diese Zeichnung bzw. Komposition ablegen.
Key: Einstellungswert im JSpinner
Value: Komposition

so ungefähr würde ich das versuchen.

gruss
 

André Uhres

Top Contributor
Statt mit einer HashMap zu arbeiten könnte man auch gleich die Objekte mit XMLEncoder in eine Datei schreiben, wobei der Dateiname die Zahl vom JSpinner enthält. Das Laden geht dann mit XMLDecoder und ist auch noch möglich nach einem Programmneustart .
 
Zuletzt bearbeitet:

noch_anfänger

Aktives Mitglied
Nach dem Vorschalg von Niki habe ich so gemacht:

Java:
private ArrayList<Paintable> figures = new ArrayList<Paintable>();
private HashMap<Integer, ArrayList<Paintable>> pictures = new HashMap<Integer, ArrayList<Paintable>>();
Code:
Paintable
ist dabei ein interface.

Ich füge Elemente zu HashMap in zwei Schritten hinzu:
Java:
Rhomb rhomb = new Rhomb(ein Paintabel);
...
figures.add(rhomb);
pictures.put(spinWert, figures);

Und das ist falsch. In
Code:
figures
werden Elemente immer wieder hinzugefügt und unabhängig vom Spinner-Wert, d.h. alles, was ich gezeichnet habe. Ich soll offensichtlich zu jedem Spinner-Wert ein
Code:
ArrayList<Paintable>
haben. Da ich 45 Spinner-Werte habe, ist das blöd, 45 private Variablen zu definieren. Wie kann ich das anders machen?
 

Michael...

Top Contributor
Ist es denn wichtig, dass man weiss zu welchen Spinnerwert welche Zeichnungen/graphischen Objekte gehören? Oder kann man nicht einfach alle zu zeichnenden Objekte in eine gemeinsame Liste stecken?

Ansonsten eine Klasse erstellen die den jeweiligen Spinnerwert als eine Art ID enthält und die zu zeichnenden Objekte in einer Liste vorhält und per Methode diese auf ein Graphics Objekt zeichnet. Das zeichnende JPanel hält dann einfach nur eine Liste solcher Objekte und arbeitet diese ab.

Edit: Hab mir gerade noch mal den Post durch gelesen und jetzt erst richtig verstanden worum's geht - zumindest glaube ich das.
Also die ersten zwei Sätze vergessen. Eine eigene Klasse schreiben, die für einen bestimmten Wert die Zeichnungen verwalten - nehme mal an, dass man da auch nachträglich Objekte hinzufügen soll.
Wie bereits oben geschrieben verwaltet das zeichnende JPanel eine Liste mit Objekten dieser Klasse und zeichnet entsprechen des aktuellen Spinnerwerts bzw. erstellt ein neues Objekt, wenn zu dem Wert noch kein "Verwaltungs"Objekt existiert.
 

noch_anfänger

Aktives Mitglied
Vielen Dank!

Die Sache ist schon erledigt.
Ich habe ähnlich zu
Eine eigene Klasse schreiben, die für einen bestimmten Wert die Zeichnungen verwalten - nehme mal an, dass man da auch nachträglich Objekte hinzufügen soll. Wie bereits oben geschrieben verwaltet das zeichnende JPanel eine Liste mit Objekten dieser Klasse und zeichnet entsprechen des aktuellen Spinnerwerts bzw. erstellt ein neues Objekt, wenn zu dem Wert noch kein "Verwaltungs"Objekt existiert.

gemacht. Aber nicht eine Klasse, sondern ein
Code:
ArrayList<ArrayList<Paintable>>
.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
M Gezeichnete Linine verschwinden AWT, Swing, JavaFX & SWT 7
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
propra Auf einem JPanel gezeichnete Linie auswählen AWT, Swing, JavaFX & SWT 3
K Swing JPanel auf gezeichnete Fläche legen AWT, Swing, JavaFX & SWT 4
MrMilti Gezeichnete Java2D Elemente mit Events versehen AWT, Swing, JavaFX & SWT 3
D gezeichnete bilder verblassen AWT, Swing, JavaFX & SWT 10
M Gezeichnete graphic in JTabbedPanel AWT, Swing, JavaFX & SWT 2
A gezeichnete Linie verschwindet, wenn ich JMenuBar öffne AWT, Swing, JavaFX & SWT 2
M gezeichnete Punkte dynamisch verschieben mit mousedragged AWT, Swing, JavaFX & SWT 4
R eine gezeichnete graphik speichern. AWT, Swing, JavaFX & SWT 15
MiMa Speichern von Image als JPG auf Festplatte AWT, Swing, JavaFX & SWT 9
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
officialmaxl JavaFX Textfield getTextfield() in String speichern AWT, Swing, JavaFX & SWT 1
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
J Warum kann ich die Spaltennummer in der Konsole anzeigen, diese aber nicht speichern ? AWT, Swing, JavaFX & SWT 6
F Output Stream / File Dateien / Speichern AWT, Swing, JavaFX & SWT 13
D String als Textdatei in ausgewähltem Speicherplatz speichern AWT, Swing, JavaFX & SWT 32
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
S URLS speichern von Internetseiten AWT, Swing, JavaFX & SWT 3
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
P Adressbuch Werte speichern AWT, Swing, JavaFX & SWT 21
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
B TableView als PDF speichern AWT, Swing, JavaFX & SWT 8
cool_brivk24 libGDX Welt speichern AWT, Swing, JavaFX & SWT 0
R Scene speichern AWT, Swing, JavaFX & SWT 7
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
I JavaFX formatierter Text in PDF speichern AWT, Swing, JavaFX & SWT 4
GenerationLost JavaFX FileChooser speichern ohne Zieldatei? AWT, Swing, JavaFX & SWT 12
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
M Kamerabilder in ein Ordner speichern AWT, Swing, JavaFX & SWT 12
F Gezeichnetes als bild speichern AWT, Swing, JavaFX & SWT 4
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
S JavaFX Fenstergrösse automatisch Speichern und Laden AWT, Swing, JavaFX & SWT 4
J Swing Fenstereinstellungen speichern AWT, Swing, JavaFX & SWT 2
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
J Swing JTable speichern AWT, Swing, JavaFX & SWT 2
C GUI öfters durchlaufen und hinterher Bild speichern AWT, Swing, JavaFX & SWT 1
S Panelzeichnung speichern AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
A Swing Malprogramm Bild speichern? AWT, Swing, JavaFX & SWT 9
G Subimage von BufferedImage speichern AWT, Swing, JavaFX & SWT 4
Y JavaFX Bild speichern und Pfad dazu abspeichern AWT, Swing, JavaFX & SWT 2
D JPanel Graphic2D als BufferedImage Speichern AWT, Swing, JavaFX & SWT 5
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
B Bildverlust bei Speichern in .jar-Archiv AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Bildteile in ein anderes Bild speichern AWT, Swing, JavaFX & SWT 12
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
J JTree speichern AWT, Swing, JavaFX & SWT 4
kodela Teil eines Panels als Graphik speichern AWT, Swing, JavaFX & SWT 3
T Modell als XML Speichern / Laden AWT, Swing, JavaFX & SWT 9
P TextField beim klicken von JButton speichern AWT, Swing, JavaFX & SWT 17
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
B Zustand eines GUI speichern AWT, Swing, JavaFX & SWT 8
I Dialog zum Speichern? AWT, Swing, JavaFX & SWT 16
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
T SWT:Datei speichern / öffnen AWT, Swing, JavaFX & SWT 6
T speichern funktioniert,aber öffnen nicht AWT, Swing, JavaFX & SWT 2
W Grafik von JFrame korrekt speichern AWT, Swing, JavaFX & SWT 7
M Position eines JLabels speichern? AWT, Swing, JavaFX & SWT 3
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
A BufferedImage nach dem Speichern immer schwarz AWT, Swing, JavaFX & SWT 8
J Speichern, Event, Hintergrund getAppletContext AWT, Swing, JavaFX & SWT 2
S JTable - Sortierung beibhalten / Speichern. AWT, Swing, JavaFX & SWT 3
C Checkbox-zustände in einem JFrame speichern AWT, Swing, JavaFX & SWT 8
R Graphics-Object speichern AWT, Swing, JavaFX & SWT 4
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
B Panel als Bild speichern AWT, Swing, JavaFX & SWT 11
Daniel_L Grafik erstellen, drin zeichnen und dann speichern AWT, Swing, JavaFX & SWT 2
K Swing Komponente als Bild speichern AWT, Swing, JavaFX & SWT 11
E Profilsichten speichern und dynamsich erzeugen?! AWT, Swing, JavaFX & SWT 2
N JTable direkt editierenund in Datenbanken speichern AWT, Swing, JavaFX & SWT 5
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
R JComboBox Ausgabe in String speichern AWT, Swing, JavaFX & SWT 3
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
0 Ausschnitt eines JPanels als Bild speichern AWT, Swing, JavaFX & SWT 4
A Programmieren einer Agenda mit einer Liste (als Applet und .txt zum Speichern) AWT, Swing, JavaFX & SWT 7
B JTextPane formatierten Inhalt speichern AWT, Swing, JavaFX & SWT 2
R TextField auslesen & in Objekteigenschaften speichern AWT, Swing, JavaFX & SWT 22
B textdatei speichern AWT, Swing, JavaFX & SWT 9
K Swing JFileChooser zum Speichern - FileFilter AWT, Swing, JavaFX & SWT 2
jgh Speichern von User-GUI-Einstellungen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben