JLabel kopieren

M

Mart

Gast
du machst eine Copy methode du übergibst eine Label
erstellst ein Label und übergibst dem Die werte die im anderen drin sind
somit hast du 2 Labels die Unabhängig sind
 

Neumi5694

Top Contributor
"wenn ich das eine ändere, wird nicht das andere geändert"
So geht das nicht. Sofern beide Labels direkt in ein Formular eingebunden sind, sind beides einzigartige Objekte.
Beste Lösung: Sprich sie nicht direkt an, sondern über einen Wrapper, der die benötigten änderbaren Eigenschaften bereitstellt. Der ändert dann beide Labels.

Du kannst aber auch so arbeiten:

Java:
class MasterLabel extends JLabel {
    private JLabel childLabel
    public MasterLabel (JLabel childLabel) {
        this.childLabel = childLabel;
    }
    @Override
    public void setText(String s) {
        super.setText(s);
        if (childLabel != null) {
            childLabel.setText(s);
        }
    }
    ...
}

Ein weiterer Kunstgriff wäre - falls du mit Listen oder Tabellen usw. arbeitest - das Label als Komponente eines CellRenderers zu liefern. Auf diese Weise könnte das selbe Label an verschiedenen Stellen angezeigt werden.


Zu deinem ursprünglichen Ansatz: Was hast du von einer Kopie denn erwartet? Kopier mal eine Seite eines Buches, dann schreib (mit Bleistift bitte) etwas auf die Originalseite. Wird die Kopie geändert?
 

ErfinderLabyrinth

Bekanntes Mitglied
"wenn ich das eine ändere, wird nicht das andere geändert"
So geht das nicht. Sofern beide Labels direkt in ein Formular eingebunden sind, sind beides einzigartige Objekte.
Beste Lösung: Sprich sie nicht direkt an, sondern über einen Wrapper, der die benötigten änderbaren Eigenschaften bereitstellt. Der ändert dann beide Labels.

Du kannst aber auch so arbeiten:

Java:
class MasterLabel extends JLabel {
    private JLabel childLabel
    public MasterLabel (JLabel childLabel) {
        this.childLabel = childLabel;
    }
    @Override
    public void setText(String s) {
        super.setText(s);
        if (childLabel != null) {
            childLabel.setText(s);
        }
    }
    ...
}

Ein weiterer Kunstgriff wäre - falls du mit Listen oder Tabellen usw. arbeitest - das Label als Komponente eines CellRenderers zu liefern. Auf diese Weise könnte das selbe Label an verschiedenen Stellen angezeigt werden.


Zu deinem ursprünglichen Ansatz: Was hast du von einer Kopie denn erwartet? Kopier mal eine Seite eines Buches, dann schreib (mit Bleistift bitte) etwas auf die Originalseite. Wird die Kopie geändert?
Kopiert man ein JLabel und ändert das Original, wird di9e kopie auch geändert, da die JLabels verknüpft sind
 

Neumi5694

Top Contributor
Kopiert man ein JLabel und ändert das Original, wird di9e kopie auch geändert, da die JLabels verknüpft sind
Dass das nicht der Fall ist, ist mittlerweile klar :)

Java:
JLabel a = new JLabel("Hallo");
JLabel b = a; //das ist keine Kopie, b verweist auf das selbe Label wie a.
JLabel c = (JLabel)a.clone(); //sollte klappen, um eine Kopie zu erzeugen. Ansonsten ein neues anlegen und die Eigenschaften manuell kopieren, so wie weiter oben gesagt.
a.setText("Dada"); //ändert das von a und b referenzierte Label, aber nicht das von c referenzierte.
c.setText"Dudu"); //ändert nur das von c referenzierte Label.
 
Zuletzt bearbeitet:

temi

Top Contributor
Hast du schon .clone() ausprobiert?
Die Methode Object.clone() ist protected und JLabel implementiert, meines Wissens, Cloneable nicht. Außerdem: clone() ist doof! ;) Joshua Bloch beschreibt es mehr oder weniger als "Fehltritt" und "nicht zur Nachahmung empfohlen".

Es stellt sich halt die Frage, warum man ein Label kopieren möchte, um dann etwas daran zu ändern?

Die Haupteigenschaft des Labels ist der Text. Ein Label soll in den meisten Fällen einen Text anzeigen. Warum sollte man also ein Label mit einem bestimmten Text kopieren, um anschließend den Text dann zu ändern. Man könnte ja gleich ein neues Label mit anderem Text erstellen. Das sind aber nur Vermutungen und Gedanken dazu. Deshalb auch die Frage nach dem "Warum".
 
Zuletzt bearbeitet:

Neumi5694

Top Contributor
Die Methode Object.clone() ist protected und JLabel implementiert, meines Wissens, Cloneable nicht. Außerdem: clone() ist doof! ;) Joshua Bloch beschreibt es mehr oder weniger als "Fehltritt" und "nicht zur Nachahmung empfohlen".

Es stellt sich halt die Frage, warum man ein Label kopieren möchte, um dann etwas daran zu ändern?

Die Haupteigenschaft des Labels ist der Text. Ein Label soll in den meisten Fällen einen Text anzeigen. Warum sollte man also ein Label mit einem bestimmten Text kopieren, um anschließend den Text dann zu ändern. Man könnte ja gleich ein neues Label mit anderem Text erstellen. Das sind aber nur Vermutungen und Gedanken dazu. Deshalb auch die Frage nach dem "Warum".

Ok, dann ohne clone () :)
Ich hab's auch noch nie gemacht, hab nie einen Sinn darin gesehen. Das wäre eben nur mein erster Ansatz für eine Kopie.

Die nächste Frage hab ich mir selbst schon gestellt. Ok, er will änderbaren Text an 2 Positionen, der sich zugleich ändern soll, das ist absolut ok. Ein Label mag ja z.B. die Beschreibung einer Auswahl darstellen oder einen Status wiedergeben (klassisches Beispiel: Statuszeile). Wenn er hier eine "2D Engine" Baut, dann mag ein Status auch 2 mal gebraucht werden, wer weiß.
Für jede Textänderung das Label aus dem Formular zu löschen, ein neues zu erstellen und das dann einzufügen ... nein, da greif ich doch lieber auf die Methode setText(String) zu.

Ich würde Labels aber so oder so nicht für eine "Engine" wählen, wo die Performance wichtiger ist als in einem Formular, paintText() oder ähnliche Methoden aufrufen, um den gewünschten Text anzuzeigen.
 

mihe7

Top Contributor
Nein, ich benutze das JLabel, um mehrere Components zu verbinden
Ich wiederhole mich: warum (bzgl. Kommentar #5: nicht wofür)? Was ist die Überlegung dahinter, ein JLabel kopieren zu wollen? Was willst Du "verbinden" und was soll das heißen?

Die Frage stellt sich, weil das "Kopieren" eines JLabels mit an Sicherheit grenzender Wahrscheinlichkeit der falsche Weg ist.
 

Neumi5694

Top Contributor
Das KANN man schon machen, rein technisch gesehen ist ein Label ein Container. Aber es ist absolut NICHT sinnvoll. Dafür verwendet man im Normalfall Panels.

Falls du das so machen willst und die Texte der untergeordneten Labels sich mit ändern sollen, dann musst du das so machen wie in meiner ersten Antwort. Du musst die Subkomponenten durchgehen, prüfen, ob es sich um Labels handelt und dann deren Text ändern.

ps: Du solltest mit dem, der dir das beigebracht hat, mal ein erstes Wörtchen reden.
 
M

Mart

Gast
wenn du sehr auf verbindungen zwischen nodes aufbauen willst dann nimm javafx her, das hat properties die darauf ausgelegt sind und vllt besser passen

zusätzlich FXGL ist eine Game Engine die auf javafx drauf gebaut wurde solltest du dir vllt ansehen
 

temi

Top Contributor
wenn du sehr auf verbindungen zwischen nodes aufbauen willst dann nimm javafx her, das hat properties die darauf ausgelegt sind und vllt besser passen

zusätzlich FXGL ist eine Game Engine die auf javafx drauf gebaut wurde solltest du dir vllt ansehen
Er sollte sich zunächst von GUIs und Game Engines komplett fern halten und erst mal die Grundlagen lernen.

Mir ist klar, dass Anfänger gerne was auf dem Bildschirm sehen möchten, aber dennoch sind die Grundlagen Vorbedingung, um das auch sinnvoll umsetzen zu können. Darum programmiere gerne ein einfaches Spiel, aber mach das am Anfang erst mal nur auf der Konsole. Alles andere (einschließlich vieler unsäglicher YT-Tutorials) ist nicht zielführend.
 
M

Mart

Gast
dann kann er auch einfach unity hernehmen das ist fast idioten sicher dass man da was auf den bildschirm kriegt

oder fxgl wenns unbedingt java sein muss
 

ErfinderLabyrinth

Bekanntes Mitglied
Er sollte sich zunächst von GUIs und Game Engines komplett fern halten und erst mal die Grundlagen lernen.

Mir ist klar, dass Anfänger gerne was auf dem Bildschirm sehen möchten, aber dennoch sind die Grundlagen Vorbedingung, um das auch sinnvoll umsetzen zu können. Darum programmiere gerne ein einfaches Spiel, aber mach das am Anfang erst mal nur auf der Konsole. Alles andere (einschließlich vieler unsäglicher YT-Tutorials) ist nicht zielführend.
Habe ich schon vor langer Zeit gemacht.
 

ErfinderLabyrinth

Bekanntes Mitglied
Ich habe schon viel mit Console gemacht, aber noch nicht so viel mit JLabels.
Ich glaube wenn, dann sollte ich mit den Components beschäftigen, was ich ja gerade mache und auch deswegen gefragt habe
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C Swing Übergabe von String an JLabel AWT, Swing, JavaFX & SWT 9
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
D JLabel übereinanderlegen AWT, Swing, JavaFX & SWT 5
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
E JLabel AWT, Swing, JavaFX & SWT 1
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
I JLabel neue Zeile AWT, Swing, JavaFX & SWT 4
L JLabel ist verzerrt/größer als eingestellt AWT, Swing, JavaFX & SWT 15
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L Kalendar als JLabel einfügen AWT, Swing, JavaFX & SWT 3
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
it_is_all jLabel.setText -> Char in Str: NullpointerException AWT, Swing, JavaFX & SWT 1
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
P Aktualisierung von jLabel in jFrames AWT, Swing, JavaFX & SWT 8
DaCrazyJavaExpert Swing JLabel Klickanimation AWT, Swing, JavaFX & SWT 4
A Swing JLabel als Parameter übergeben AWT, Swing, JavaFX & SWT 9
M JLabel ausrichten AWT, Swing, JavaFX & SWT 2
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
T JLabel Textinhalt von Oben anzeigen AWT, Swing, JavaFX & SWT 1
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
Thallius Swing "..." beim JLabel verhindern? AWT, Swing, JavaFX & SWT 3
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
T Event Handling JLabel als eigener Button AWT, Swing, JavaFX & SWT 7
T JLabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
F Abgeleitetes JLabel AWT, Swing, JavaFX & SWT 16
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
S jLabel HTML Formatierung AWT, Swing, JavaFX & SWT 2
J Statisches JLabel adden AWT, Swing, JavaFX & SWT 4
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
T JLabel in die Mitte(JLabel.CENTER geht nicht) AWT, Swing, JavaFX & SWT 12
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
E JLabel aus Runnable ändern AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D JLabel bei Aufruf neue Zeile AWT, Swing, JavaFX & SWT 5
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
F Swing JLabel wird nicht sofort Angezeigt AWT, Swing, JavaFX & SWT 3
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
Z Auf ein JLabel drauf malen? AWT, Swing, JavaFX & SWT 1
S JLabel in den Vordergrund rücken AWT, Swing, JavaFX & SWT 1
A JLabel hochzählen lassen. AWT, Swing, JavaFX & SWT 6
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
S JLabel anordnen AWT, Swing, JavaFX & SWT 2
J ungewollt-automatische Größenänderung von JLabel AWT, Swing, JavaFX & SWT 5
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
B Swing JLabel und LayoutManager AWT, Swing, JavaFX & SWT 20
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
O Statusleiste mit JLabel aktualisieren AWT, Swing, JavaFX & SWT 5
G jLabel aus anderem Fenster ändern AWT, Swing, JavaFX & SWT 7
T JLabel Nullpunkt verschieben AWT, Swing, JavaFX & SWT 6
F Swing JPanel mit JLabel spinnt? AWT, Swing, JavaFX & SWT 2
M Massenweise JLabel ? oder ? AWT, Swing, JavaFX & SWT 3
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
V JLabel bzw. GUI aus externen Thread ansteuern AWT, Swing, JavaFX & SWT 3
G JLabel verdeckt AWT, Swing, JavaFX & SWT 12
A JLabel zeichendicke einstellen AWT, Swing, JavaFX & SWT 3
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
S JLabel zeigt ImageIcon nicht AWT, Swing, JavaFX & SWT 13
S jLabel / jText beim starten ausblenden AWT, Swing, JavaFX & SWT 2
A Array von JLabel mit Grafiken anzeigen AWT, Swing, JavaFX & SWT 3
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
T Kreis in Jlabel darstellen. AWT, Swing, JavaFX & SWT 13
SexyPenny90 JLabel liegt unter meiner Turtle AWT, Swing, JavaFX & SWT 5
V JLabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
B Buttons auf JLabel? AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben