Ich kann mein Label nicht finden

RealHAZZARD

Erfahrenes Mitglied
Tag auch.

Wie man an folgender Frage merkt bin ich Anfänger.

Code:
   .
   ..
   ...
   JTextArea _ip_Label=new JTextArea();
   ...
   ..
   .
  //Alle Events
 ActionListener GetStats_Click = new ActionListener() 
 {
 	//Das Event zu meinem GetStats
 	public void actionPerformed( ActionEvent e ) 
   	{
   		 //Ich leite meine Klasse mit den Netzwerkfunktionen ab
   		NetWORKS netadapter=new NetWORKS();
   		 _ip_Label.setText(netadapter.getLocalIp());
   	}
 };
   ...
   ..
   .

Wie man sieht ist das nicht der ganze Code, allerdings alles was
man wissen muss.

Dass das so nicht ganz geht (Cannot refer to a non-final variable _ip_
Label inside an inner class defined in a different method
) war mir vorher
schon fast klar.
Aber ich hab keine Lösung wie ich das richtig mache.
Kann mir einer helfen, und mir schreiben wie man sowas normalerweise macht?
 
Mach eine vollständige Innerclass draus, dann müßte es funktionieren:

Code:
 JTextArea _ip_Label=new JTextArea();
   ...
   ..
   .
  //Alle Events
 ActionListener GetStats_Click = new myActionListener();

 ...
 class myActionListener implements ActionListener
 {
 	//Das Event zu meinem GetStats
 	public void actionPerformed( ActionEvent e ) 
   	{
   		 //Ich leite meine Klasse mit den Netzwerkfunktionen ab
   		NetWORKS netadapter=new NetWORKS();
   		 _ip_Label.setText(netadapter.getLocalIp());
   	}
 }
 
Hey .
Danke für deine schnelle Antwort.
Ich hab das mal anstelle meines Codes eingefügt, aber es will noch nicht
so ganz. Kann daran leigen weil ich das auch irgendwie noch nicht so ganz versteh.
Kannst du mir das etwas erklären was da vor sich geht?
 
Gibts eine hilfreiche Fehlermeldung?

Was da vor sich geht: du imlementierst einen ActionListener, der vmtl. aufgerufen wird, wenn der Benutzer auf einen Button klickt. Die Zuweisung Button/Listener fehlt in deinen Codeauszügen. In deinem ActionListener ist festgelegt, dass beim Ereignis (dem Klick auf den Button) eine neue Instanz deiner Netzwerkklasse erstellt wird und mit deren Hilfe die lokale IP (vermute ich mal aufgrund des Methodennamens ;)) in dem Textfeld ausgegeben wird.
 
Fehlermeldung:

Code:
  		 class myActionListener implements ActionListener
  		 {
  			 //Das Event zu meinem GetStats
  			 public void actionPerformed( ActionEvent e ) 
  			   {
 			 	 //Ich leite meine Klasse mit den Netzwerkfunktionen ab
 				 NetWORKS netadapter=new NetWORKS();
 			 _ip_Label.setText(netadapter.getLocalIp()); //FEHLER:_ip_Label cannot be resolved
  			   }
 			 ActionListener GetStats_Click = new myActionListener();
  		 }
 
Ich vermute, dass deine Klasse falsch strukturiert ist. Die Definition und Zuweisung deiner Variable GetStats_Click gehört mal auf jeden Fall nicht in den ActionListener selbst, sondern in die Hauptklasse.
 
Ich hab mal was anderes versucht.
Ich hab meine Textfeld in der Hauptklasse selbst als private deklariert und
dann ne private Funktion geschrieben, die das Textfeld ausfüllt.
Die ruf ich dann im GetStats_Click auf.
Es geht, aber...
Kann man das so machen?
 
Na klar! Ist sowieso eleganter. Aber eigentlich - wenns nur um ne schnelle Lösung geht - solltest du auch aus der Innerclass auf die Instanzvariablen der Hauptklasse zugreifen können.
 
Wie gesagt. Ich bin Anfänger.
Erklär mir mal bitte den Begriff "InnerClass" für diesen Fall etwas genauer.
Sorry bin halt noch n Nb.
 
Zurück