Textlabel aus anderer Klasse ansprechen - Konstruktor notwendig?

Status
Nicht offen für weitere Antworten.

r0xta

Mitglied
Hallo zusammen,

habe glaub ich die Sache mit den Konstruktoren noch nicht ganz verstanden.

Ich hab in einer Klasse eine if-Abfrage die (wenn true) den Text eines Labels (Variablenname frontLabel) meiner Klasse2 verändern soll.

Java:
          if (bedingung(true)){

               Klasse2.frontLabel.setText("asdf");

            }

Irgendwie macht er das aber nicht. Reicht das so noch nicht und ich muss erst irgendwie nen Konstruktor machen? Wenn ja, wie geht das?
 

Marco13

Top Contributor
Das hat mit Konstruktoren nichts zu tun. Man braucht dafür eine Instanz der Klasse2 (also DOCH einen Konstruktor, aber ... neeiinn)...

Java:
class Klasse1
{
    private Klasse2 anderesObjekt;

    public void setAnderes(Klasse2 anderes)
    {
        this.anderesObjekt= anderes;
    }

    void machWas()
    {
        if (bedingung(true))
        {
            anderesObjekt.frontLabel.setText("asdf");
        }
    }
}

Iregendwo muss dann halt (BEVOR machWas aufgerufen wird) einmal

meinKlasse1Objekt.setAnderes(meinKlasse2Objekt);

aufgerufen worden sein...
 

hdi

Top Contributor
Allgemein: Alles was nicht statisch ist, ist objekt-bezogen, d.h. du brauchst auch ein Objekt. Ein Objekt ist eine Instanz einer Klasse, eine Klasse selber ist nur eine Art Handbuch über ein Objekt (zumindest wenn man es objektorientiert sehen will). Eine Instanz erzeugst du per
Code:
new
, also Aufruf eines Konstruktors der Klasse.
Alle statischen Dinge sind sozusagen global "einfach da" in einer Klasse. Das sollte man möglichst vermeiden, sowas nutzt man nur bei zB mathematischen Hilfsfunktionen, wo es keinen Sinn macht ein Objekt zu erzeugen.
Alternativ zu Marco's Vorschlag kannst du auch direkt dein Label in die Methode reinreichen, dann sparst du dir den Setter und die Instanz-Variable. (Wenn du in mehreren Methoden etwas mit dem Label machen möchtest, wäre Marco's Variante wieder besser)
 
Zuletzt bearbeitet:

r0xta

Mitglied
Alternativ zu Marco's Vorschlag kannst du auch direkt dein Label in die Methode reinreichen, dann sparst du dir den Setter und die Instanz-Variable. (Wenn du in mehreren Methoden etwas mit dem Label machen möchtest, wäre Marco's Variante wieder besser)


hab das mal versucht zu umreisen:

Java:
 JLabel meinInstanzLabel = new Klasse2.besagtesLabel();
meinInstanzLabel.setText("bla");


Java:
JLabel
gibt an um was für einen Typ (richtig formuliert?) es sich handelt, korrekt??
Java:
meinInstanzLabel
ist einfach nur der neue Variablenname für das Label in meiner Klasse1
Java:
new Klasse2.besagtesLabel();
Ich glaub an der Stelle lieg ich total daneben. Muss ich hier nicht auf das besagteLabel in Klasse2 zugreifen? wobei die Klammern () ja eigentlich auf ne Methode hinweisen...?? aber das Label ist ja keine Methode?
 

hdi

Top Contributor
Java:
JLabel
gibt an um was für einen Typ (richtig formuliert?) es sich handelt, korrekt??
Das ist der Datentyp der Variablen, ja.

Java:
meinInstanzLabel
ist einfach nur der neue Variablenname für das Label in meiner Klasse1
Wieso "neuer" Variablenname - Es ist der Name der Variablen, die du hier deklarierst, ja.

Java:
new Klasse2.besagtesLabel();
Ich glaub an der Stelle lieg ich total daneben. Muss ich hier nicht auf das besagteLabel in Klasse2 zugreifen? wobei die Klammern () ja eigentlich auf ne Methode hinweisen...?? aber das Label ist ja keine Methode?
Also du vermischt hier Konstruktoren mit Methoden. Weisst du was ein Konstruktor ist? Den ruft man mit new auf, und der erzeugt eine Instanz einer Klasse, aber du kannst nicht eine Methode instantiieren. Was du willst* ist ein Methodenaufruf, sprich einfach ohne das "new".
Jetzt hast du allerdings das Problem, dass das so auch nicht gehen wird, da diese Methode wohl nicht statisch ist. D.h. du brauchst eine Instanz der Klasse2, um diese Methode aufzurufen.

Also, wenn du in Klasse X ein Objekt der Klasse Y brauchst, dann solltest du dieses Objekt beim Instantiieren hereinreichen, also im Konstruktor:

Java:
class X{
  private JLabel aLabel;  
  
  public X(Y y){
      aLabel = y.getTheLabel();
  }
}

Und ja, getTheLabel() ist nicht das Label, sondern eine Methode in der Klasse Y, die das Label returned:

Java:
// in der Klasse Y
public JLabel getTheLabel(){
  return myLabel;
}

Alternativ - * und das ist wohl das, was du wirklichmit deinem Code wohl machen wolltest ;) - kannst du die Sichtbarkeit von "myLabel" in der Klasse y auch so einstellen, dass Klasse X direkt darauf zugreifen kann, zB machst du es public, dann sähe der Konstruktor der Klasse X halt so aus:

Java:
class X{
  private JLabel aLabel;  
  
  public X(Y y){
      aLabel = y.myLabel; // das ist kein Methodenaufruf, sondern ein direkter Zugriff auf eine Variable
  }
}

edit: Uuahh naja das war jetzt einigermaßen verwirrend erklärt ;) Ich hoffe du verstehst trotzdem den Unterschied zwischen Konstruktoren-Aufrufen, Methoden-Aufrufen und direkten Zugriffen auf Variablen. Wenn nein frag nochmal nach ;)
 
Zuletzt bearbeitet:

r0xta

Mitglied
Ich glaub 2/3 hab ich jetzt verstanden!

Den Unterschied zwischen Variablenaufruf und Methodenaufruf müsste so gehn:

Variablenaufruf: Ich weise in Klasse1 einer Variable1 den Wert einer Variable2 zu die in Klasse2 einen bestimmten Wert hat
Java:
private float Variable1 = Klasse2.Variable2;

Methodenaufruf: In Klasse2 existiert eine Methode die einen Wert zurückgibt. Will ich nun meiner Variable1 in Klasse1 diesen Wert zuweisen mach ich das mit
Java:
private float Variable1 = Klasse2.Methode();


So und nun der Konstruktorenspaß. Hier hast du recht, ich schein da immer noch was mit den Methoden zu vermischen.
Ich hab nen Konstruktor bisher so verstanden, dass er eine Verknüpfung zu einer anderen Klasse herstellt, damit ich deren Methoden nutzen kann. Und dazu muss ich zuerst eine Instanz erschaffen. Eine Instanz ist eine Methode in meiner Klasse1, die die "Eigenschaften" der Methode aus Klasse2 erhält. Ich erschaffe sozusagen in Klasse1 eine Abbildung der Methode von Klasse2.
Java:
neuerMethodenname = new Klasse2.MethodeAusKlasse2();
Nun kann ich in meiner Klasse1 auf neuerMethodenname immer zurückgreifen und muss nicht immer den Methodenaufruf anwenden.

So stell ich mir das grad vor ^^
Lieg ich da falsch??
 
Zuletzt bearbeitet:

hdi

Top Contributor
Also das mit dem Variablen- & Methodenaufruf stimmt so für den Fall von statischen Variablen und Methoden. Bei nicht-statischen Dingen geht das so nicht, da nicht-statisch heisst: An ein Objekt gebunden. Sprich du brauchst zuerstmal eine Instanz dieser Klasse (Objekt = Instanz).

...das wird vllt verständlicher wenn du das mit den Konstruktoren verstanden hast. Und das hast du leider total falsch verstanden ;) Ein Konstruktor ist keine Methode und hat damit auch gar nix zu tun. Ein Konstruktor erzeugt eine Instanz einer Klasse:
Java:
new Auto();
wäre der Aufruf des Konstruktors in einer Klasse namens Auto, und was da returned wird ist eben eine Instanz der Klasse. Also kurz gesagt: Ein Auto halt. Das ist jetzt ein Objekt, keine Klasse oder Methode.
Und so ein Objekt enthält alle Variablen und Methoden der Auto-Klasse, die nicht statisch sind. Und durch Dereferenzierung (=Punkt-Notation) kannst du auf diese Dinge zugreifen:

Java:
Auto meinAuto = new Auto();
meinAuto.getPs();
// oder meinAuto.ps, falls diese Variable sichtbar ist

Hm..also.. es ist extrem wichtig dass du den Unterschied verstehst zwischen Klassen und Instanzen, und zwischen Konstruktoren und Methoden. Und zwischen statischen und nicht-statischen Dingen. Es gibt hier in der FAQ dazu auch allerhand Dinge, im Abschnitt "Einführung und erste Schritte".
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
pkm Eclipse wie mit anderer JAVA-Version starten? Java Basics - Anfänger-Themen 1
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
M Klassen Klasse aus anderer Klasse "aufrufen" Java Basics - Anfänger-Themen 2
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
B Schleife von anderer Methode stoppen? (Start continue) Java Basics - Anfänger-Themen 18
I Eigenschaften von Position aus anderer Klasse übernehmen Java Basics - Anfänger-Themen 17
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
T OOP GUI aus anderer Klasse updaten Java Basics - Anfänger-Themen 6
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
A JButton in anderer Klasse bearbeiten. Java Basics - Anfänger-Themen 2
M String zerlegen anhand anderer String Java Basics - Anfänger-Themen 6
deatzi Wert aus anderer Klasse lesen Java Basics - Anfänger-Themen 7
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
C Methoden Auf Methoden anderer Klassen zugreifen Java Basics - Anfänger-Themen 10
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Methoden Auf Variabler aus anderer Methode zugreifen Java Basics - Anfänger-Themen 5
F Interface JButton von anderer Klasse hinzufügen Java Basics - Anfänger-Themen 2
L Klassen Methode aus anderer Klasse Java Basics - Anfänger-Themen 13
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
arjoopy Methoden Methoden anderer Klassen Java Basics - Anfänger-Themen 6
J Button in anderer Klasse ändern Java Basics - Anfänger-Themen 3
E Referenzvariable in anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
E Klassen Referenzvariable in anderer Klasse aufrufen. Java Basics - Anfänger-Themen 1
M Neu instanzierte Klasse übernimmt Werte von anderer Instanz Java Basics - Anfänger-Themen 4
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Java Basics - Anfänger-Themen 0
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
1 Arraylist in anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
S Klassen Instanz anderer Klasse raus geben Java Basics - Anfänger-Themen 1
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
B Klassen Auf Instanz anderer Klasse zugreifen Java Basics - Anfänger-Themen 1
D Methoden g.setColor funktioniert nicht bei Methodenaufruf in anderer Klasse Java Basics - Anfänger-Themen 1
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
Z Wie Objekte anderer Klassen ansprechen? Java Basics - Anfänger-Themen 2
U Code anderer Programmierern verstehen Java Basics - Anfänger-Themen 2
B Liste in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
F Methoden aus anderer classe über nehmen Java Basics - Anfänger-Themen 10
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
W OOP Member anderer Klassen erreichen Java Basics - Anfänger-Themen 1
X Gwt DnD, Drag auf Droparea in anderer Klasse? Java Basics - Anfänger-Themen 0
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
T Variablen anderer Klassen Java Basics - Anfänger-Themen 1
T Vererbung Variable aus anderer Klasse verwenden Java Basics - Anfänger-Themen 8
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
P Methoden Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 4
Jackii Globale Variable aus anderer Klasse ändern... Java Basics - Anfänger-Themen 4
L Erste Schritte Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 16
Mr. Pink Graphics2D in anderer Methode aufrufen Java Basics - Anfänger-Themen 6
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
T Variable aus anderer Klasse Java Basics - Anfänger-Themen 3
A Import anderer Classen aus anderen Projekten Java Basics - Anfänger-Themen 6
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
G ArrayList in anderer Klasse verwenden Java Basics - Anfänger-Themen 31
C Timer aus anderer Klasse stoppen/starten Java Basics - Anfänger-Themen 3
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
G Objekt wie Objekt anderer Klasse behandeln Java Basics - Anfänger-Themen 4
K Vererbung Variable aus anderer Klasse nutzen Java Basics - Anfänger-Themen 3
P Klassen JTextfield aus anderer Klasse herausfüllen Java Basics - Anfänger-Themen 12
G Klassen Richtig auf jTextArea aus anderer Klasse zugreifen? Java Basics - Anfänger-Themen 3
A Klassen Klasse in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
V ComboBox Ergebnisse abhängig von anderer ComboBox - Wie? Java Basics - Anfänger-Themen 7
J Button in extra Klasse festlegen und in anderer Klasse einfügen? Java Basics - Anfänger-Themen 3
J GUI Button Klasse in anderer Klasse einfügen Java Basics - Anfänger-Themen 3
Bluedaishi Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden Java Basics - Anfänger-Themen 34
G Methodenaufruf anderer Klasse Java Basics - Anfänger-Themen 18
J Threads Variablen Wert aus anderer Klasse auslesen Java Basics - Anfänger-Themen 4
A Array aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 9
N GUI aus anderer Klasse beziehen Java Basics - Anfänger-Themen 21
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
F Erste Schritte String von anderer Klasse auf TextArea von erster Klasse Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben