JPanel soll auf Veränderungen reagieren!

Status
Nicht offen für weitere Antworten.

Doktor Ruff

Mitglied
Also ich habe eine Klasse in der diverse Strings, Integer, etc. untergebracht sind. Diese können natürlich zur Laufzeit vom Benutzer geändert werden bzw. das Programm kümmert sich darum.

Damit der Benutzer auch was davon hat will ich diese ganzen Daten in einem JPanel unterbringen.

So Weiter: Ich habe eine Klasse MeinJPanel (erweitert die Klasse JPanel) geschrieben, die im Konstruktor das oben genannte Objekt entgegennimmt und alles schön so macht wie ich es will.

Jetzt kommt erstmal meine erste Frage: Da ich das Objekt in einer Parameterliste übergebe, wird das Objekt doch kopiert oder? Und wenn ich jetzt was an meinem eigentlich Objekt ändere bleibt das Objekt in dem JPanel doch verschont oder? (ich bin mir auf einmal nicht mehr so ganz sicher, "call by reference" gab es ja in Java nicht)

Zweite Frage: Damit ich die Ausgabedaten in meinem JPanel aktualisieren kann muss der JPanel wissen, wann sich etwas geändert hat an dem Objekt. Wie schaffe ich das? Ich finde es ziemlich umständlich nach jeder Änderung an meinem Objekt, aus dem Objekt heraus die Methode repaint() für den JPanel aufzurufen. Außerdem soll das Objekt von dem JPanel garnix wissen.

Ich bin da schon in der API auf das Interface Observer bzw. die Klasse Observable gestoßen allerdings steig ich da nicht durch. Ich ziehe es allerdings vor einmal selber eine Lösung zu programmieren damit ich das Prinzip von Oberservern verstehe.
 
S

SlaterB

Gast
> die im Konstruktor das oben genannte Objekt entgegennimmt

ein spezielles Objekt hast du nicht genannt, meinst du Strings und Integer, alle einzeln oder zusammengepackt in einem Object-Array oder gar in einem Objekt einer eigenen Behälter-Klassse?


normalerweise werden bei Objekten in Java wirklich nur Referenzen übergeben,
bei Strings und Integer liegt aber ein Spezialfall vor, diese Objekte sind nämlich unveränderlich, man kann sie gar nicht ändern,

wenn du aber ein Object-Array übergibst {"eins","zwei", "drei"} und irgendwo anders in diesem Array "eins" durch "vier" ersetzt, dann liegt auch im JPanel dasselbe Array vor: {"vier","zwei", "drei"},

inwiefern sich eine solche Anderung auf die graphische Ausgabae auswirkt, ist natürlich noch nicht gesagt,
das ganze Array wird ja kaum angezeigt, sondern eher die Strings daraus

(edit: ach hast ja doch ein Behälter-Objekt, für diese gilt praktisch analog alles was ich über das Object-Array gesagt habe)


-----------

bei einer Änderung muss irgendwann repaint() aufgerufen werden, da führt kein Weg dran vorbei,
ob das nun aus dem Objekt heraus geschieht oder von einer höheren Verwaltungsklasse ist ja prinzipiell egal,
nur stylistisch ein Unterschied

Observer ist nicht schwer,
das JPanel muss sich einmal registrieren, und wann immer eine Änderung stattfindet hat das Objekt die Referenz auf das Panel um dort eine Operation reagiereAufAenderung() aufzurufen
 

Doktor Ruff

Mitglied
Noch mal zu dem Parameter!

Erstmal ja es ist eine Wrapper-Klasse (habe ich gerade gelernt ;)) ... Sprich die ganzen Daten sind umhüllt von einer Klasse. So wenn ich jetzt das Objekt der Klasse bzw. eine Instanz der Klasse dem JPanel übergebe und ihn dort abspeichere sind die beiden Objekte absolut identisch???? Sprich jede Veränderung an dem Objekt wird auch bei dem anderen übernommen?[/code]
 
S

SlaterB

Gast
jo, an sich ist das eine der Grundlagen in Java,
warum klärst du sowas über Foren, statt es einfach mal auszuprobieren? ;)
learning by doing

Änderungen werden nicht beim anderen Objekt übernommen, es liegt einfach nur ein gemeinsames Objekt vor!
 

Doktor Ruff

Mitglied
SlaterB hat gesagt.:
jo, an sich ist das eine der Grundlagen in Java,
warum klärst du sowas über Foren, statt es einfach mal auszuprobieren? ;)
learning by doing

Änderungen werden nicht beim anderen Objekt übernommen, es liegt einfach nur ein gemeinsames Objekt vor!

Ich hab an dem Internet-PC leider keine IDE bzw. JavaSDK um es sofort auszuprobieren. Ich wollte das mit dem Parametern auch garnicht fragen aber als ich gerade in dem Forum am posten war kamen mir irgendwie daran Zweifel auf. Hab in letzter Zeit zuviel C++ programmiert. Da ist das mit den Parametern ja etwas anders.

EDIT: Dann werde ich mich mal an dieses Oberservable Ding dranhängen damit ich mein eigentliches Problem löse.
 
G

Guest

Gast
Zur Klarstellung:

Java kennt im Gegensatz zu C/C++ nur call by value, d.h., die übergebenen Werte werden
immer kopiert. Bei Standard-Datentypen ist das wohl verständlich.

Wenn du allerdings Instanzen einer Klasse übergibst, werden nicht die Instanzen selbst
kopiert sondern die Referenz auf die Instanz wird kopiert und damit dem
Methodenparameter zugewiesen. Beide Referenzen (Aufrufer und lokaler Parameter) verweisen
damit immer auf dasselbe Objekt.

Leroy42
 

Doktor Ruff

Mitglied
Anonymous hat gesagt.:
Zur Klarstellung:

Java kennt im Gegensatz zu C/C++ nur call by value, d.h., die übergebenen Werte werden
immer kopiert. Bei Standard-Datentypen ist das wohl verständlich.

Wenn du allerdings Instanzen einer Klasse übergibst, werden nicht die Instanzen selbst
kopiert sondern die Referenz auf die Instanz wird kopiert und damit dem
Methodenparameter zugewiesen. Beide Referenzen (Aufrufer und lokaler Parameter) verweisen
damit immer auf dasselbe Objekt.

Leroy42

Jo ungefähr so kehrte es in mein Java-Gedächtnis zurück ;) ...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
C jPanel im jPanel verändern Java Basics - Anfänger-Themen 15
B JPanel nachträglich verändern Java Basics - Anfänger-Themen 20
C JPanel erhält sporadisch keinen Fokus Java Basics - Anfänger-Themen 3
I repaint bei jpanel Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben