jLabel lässt sich nicht public setzen??

r0xta

Mitglied
Hallo zusammen,

ich arbeite mit Eclipse und versuche verzweifelt ein jLabel public zu setzen.

In der Sourceansicht kann ich das nicht editieren. Also geh ich in der Designansicht unter Properties auf Code und dort auf Variable Modifiers und setze den Access auf public.

Und siehe da... Nichts passiert 🙁

Füge ich nun z. B. den mouseEntered Event hinzu und gehe zurück in die Sourceansicht - warum zur Hölle steht da immer noch private void und ich kann nichts zurückgeben???
 
Eclipse und man kann nichts editieren? Ich arbeite auch mit Eclipse und ich komme im normalfall an allen Quellcode ran. Wenn es sich nicht auf public setzten lässt kannst immer noch mit getters und setters arbeiten.

warum da private void steht? Wo steht des? Sicher nicht beim Label, es sei denn du machst eine Methode draus
 
jo richtig, ich mach ne Methode draus, mouseEntered. Und da is dann im SourceCode so n grauhinterlegter Text in dem ich nix ändern kann

Java:
    private void frontLabelMouseClicked(java.awt.event.MouseEvent evt) {
        // TODO add your handling code here:
    }

ich kann nur beim Kommentar Änderungen vornehmen. Aber ich will diese Methode public haben. die soll nen Wert zurückgeben soll wenn auf den label geklickt wurde
 
private und public haben aber nichts mit Rückgabewerte zu tun. Was willst denn mit der Rückgabe machen? Und der grau hinterlegte Text ist Kommentar, den kannst einfach löschen
 
der kommentar is nicht grau hinterlegt. der is in grauer schriftfarbe. den kann ich ändern.
das hier is grau hinterlegt:

Java:
 private void frontLabelMouseClicked(java.awt.event.MouseEvent evt)

das würd ich gern in public string ändern. aba da kann ich nichts ändern?

Die Methode soll hinterher so aussehen:


Java:
 public string frontLabelMouseClicked(java.awt.event.MouseEvent evt){
   public string spieler = spielerEingabe.text;
   return spieler;
}
 
Ich glaub, du hast einen Denkfehler drin. Ein Mouseklicked oder sonst ein Event, wird ja von einem Mausklick ausgeführt. Und wenn eine Methode was zurück gibt, dann an den, der sie ausführt, bzw aufruft.
Dementsprechend müsste ja dein Mausklick einen String zurückbekommen.
Man kann auch einfach in der Methode, den setText() des Labels aufrufen und dann einfach da rein schreiben.
 
der kommentar is nicht grau hinterlegt. der is in grauer schriftfarbe. den kann ich ändern.
das hier is grau hinterlegt:

Java:
 private void frontLabelMouseClicked(java.awt.event.MouseEvent evt)

das würd ich gern in public string ändern. aba da kann ich nichts ändern?

Die Methode soll hinterher so aussehen:


Java:
 public string frontLabelMouseClicked(java.awt.event.MouseEvent evt){
   public string spieler = spielerEingabe.text;
   return spieler;
}

wieso rufst du in deiner frontLabelMouseClicked nicht einfach eine neue methode auf, der du den string übergibst, irgnedwas dmait machst und dann gibt halt deine methode einen string zurück ?
und
public string spieler = spielerEingabe.text; .... das public hat da garnichts zu suchen ?! ;D
 
hm... ich kann ein jLabel also nicht public setzen?

wenn ich 2 klassen hab, in Klasse2 sitzt mein jLabel

nun möchte ich in Klasse1 darauf zugreifen um den Text zu ändern

Java:
    private void labelSetzen (){
        
        private JLabel newLabel = Klasse2.frontLabel.setText("Test");
        
    }

dann meckert er ja mein label hätte private access.
 
das hat nichts mit dme label zu tun. du kannst allgemein keine zugriffsmodifier für lokale variablen anlegen. wieso auch, die sind nunmal nur innerhalb dieser methode/block sichtbar ?!
 
Ich glaube, da ist ein grundlegender Denk-/Designfehler drin.
Innerhalb von Methoden werden methodenlokale Variablen definiert. Ausserhalb der Methode sind die nicht sichtbar. Was anderes geht nicht. Du könnstest also eine Klassenvariable definieren (also quasi Global für die Klasse) und darauf von einer anderen Klasse zugreifen. Gerne macht man das mit Getter/Setter Methoden. (In Eclipse auf die fragliche Variable, rechte Maustaste - Source - Generate Getter/Setter).
 
ich dachte man kann mit return die variable einer methode uneingeschränkt zurückgeben.
aber das scheint wohl nich zu funkionieren.

das beste is glaub ich noch paar bücher zu wälzen :rtfm:

danke euch!
 
Soooo. Ich hab mich noch mal schlau gemacht und anschließend dran gewagt.

Momentaner Stand (frontLabel = Label in Klasse2, dieses soll neu beschriftet werden):

Java:
public Klasse1{
 private Klasse2 zielLabel;

    public void setLabelZiel(JFrame frontLabel)
    {
        this.zielLabel = frontLabel;
    }

   ...

    if (Bedingung(true)) {
         zielLabel.frontLabel.setText("Bla");
  }

}

und er erzählt mir immer noch: "frontLabel has private access in package.klasse2"
wo bin ich noch falsch gewickelt?
 

Neue Themen


Zurück
Oben