Variables Initalisieren von Feldern im Fenster

Status
Nicht offen für weitere Antworten.
G

gast

Gast
Code:
   String AusgabeFeldName

   AusgabeFeldName = "ausgabe" + (Zeilen);

   Label AktAusgabe = this.AusgabeFeldName;

   //Label AktAusgabe = this.ausgabe6; // funktioniert

   AktAusgabe.setText(" " + Zahl);

Ich versuche eine Variable an das this zu hängen, bekomme sie aber nicht ausgewertet, gibt es einen Trick.

Mit der auskomentiereten Zeile funktioniert es . Die Varialbe AusgabeFeldName ist String.

Wenn ich den Compiler dazu bewegen könnte AusgabeFeldName erst auszuwerten und dann den Verweis zu erzeugen dann wäre die Welt in Ordnung und könnte das Konzept auch auf andere Felder im Formular umsetzen.

Schönen Dank für die Hilfe.
 

sliwalker

Top Contributor
Moin,

erstens:
Variablendefinitionen werden mit Semikolon abgeschlossen.

zweitens:
Es ist Dir doch klar, dass Du mit dem Zuweisungsoperator "=" keine Variable vom Typ String einer Variablen vom Typ Label zuweisen kannst, oder?

Man kann nur raten, was Du tun willst.
Was heißt Du willst eine Variable an das this anhängen?
Versteh ich nicht.

this wird verwendet man, wenn man sich auf die Instanz eines bjekts beziehen will, indem man sich gerade befindet. Du bekommst also Zugriff auf ALLE Deine Klassenattribute und Methoden. Da wird nix angehangen.

Deine auskommentierte Zeile hilft uns überhaupt nicht, weil man nicht erkennt, welchen Typ "ausgabe6" hat.

Die letzte Zeile ist der richtige Weg, um einem Label einen text zuzuweisen.

Also schreib nochmal genauer (in Lehrbuchsprache) was Du eigentlich machen willst...

greetz
SLi
 
G

gast

Gast
Ich habe nur ZeilenAuszüge in den Code geschrieben, die Sache mit dem Semikolon ist mir klar.

Grundsätzlich funktioniert auch alles wenn ich die auskomentiert Zeile verwende.

hier erst einmal der ganze Code
Code:
  void meineMethode()
  {
    
		// Variablendeklaration __________________________
                int       FlagVorz;               // Statische Variable	
				int		  Zeilen;
                int       Zahl;                   // Normale Variable 
				int	      BasisZahl;              // 
				String    AusgabeFeldName;         //
				Random r = new Random();
		
		// Variablen Inialisierung
		Zahl = 1;
		FlagVorz = 1;
		Zeilen = 1;
		Zahl += 47;
        AusgabeFeldName = "";
	  
		

      	for (Zeilen = 1; Zeilen<7; ++Zeilen) {
			
			// Datentypenkonvertierung von String nach Integer
			Integer BasisWert = new Integer(TP11.getText());
			BasisZahl = BasisWert.intValue();
			
			FlagVorz = Math.abs(r.nextInt()) % 2;
			if (FlagVorz == 0)
				Zahl = BasisZahl + Math.abs(r.nextInt()) % 6;
			else
				Zahl = BasisZahl - Math.abs(r.nextInt()) % 6;
			
		
			//System.out.println(AusgabeFeldName);
	
			AusgabeFeldName = "ausgabe" + (Zeilen);
			Label AktAusgabe = this.AusgabeFeldName;
			//Label AktAusgabe = this.ausgabe6;  // funktioniert
			AktAusgabe.setText(" " + Zahl);
			
			ausgabe2.setText(AusgabeFeldName);
		}
	
  }

Um es nicht allzu lang werden zu lassen.

ausgabe1 bis ausgabe6 sind label
TP11 bis TP16 sind Textfelder
Alles wird in Panels im Fenster dargestellt.

alles funktioniert mit Zeile 40 und wird in der Klasse im Fenster dargestellt, den Code habe ich jetzt nicht gepostet.
Mit Zeile 39 funktioniert es jedoch nicht.

Problem ist das ich den Kompiler dazu bekommen möchte erst AusgabeFeldName auszuwerten bevor er Label AktAusgabe erstellt. Also in der ForSchleife ausgabe1 bis ausgabe6 erzeugt.

Ich hoffe so ist es klarer geworden.
 

sliwalker

Top Contributor
Ahh,

ich habe eine leise Ahnung was Du tun willst, auch wenn Du es wieer nicht auf den Punkt bringen konntest.

Hier mal meine Idee was Du zu tun gedenkst:

Mit dem hier...
Code:
         AusgabeFeldName = "ausgabe" + (Zeilen);
         Label AktAusgabe = this.AusgabeFeldName;
         //Label AktAusgabe = this.ausgabe6;  // funktioniert
         AktAusgabe.setText(" " + Zahl);
         
         ausgabe2.setText(AusgabeFeldName);
...wilst Du bezwecken, dass der WERT (Inhalt) der String-Variablen "AusgabeFeldName", was in dem Fall der String "ausgabe" und ein int-Wert "6" ist...sprich "ausgabe6", als VariablenName angesehen wird, was ein Label bezeichnen würde. OMG!

So geht das nicht. String bleibt String. Der Wert einer Variablen ist nicht gleich einer Variablen die genauso heißt wie der Wert ist!
Merk Dir das...WICHTIG!

Du kannst es aber einfacher haben, indem Du Deine Label in ein Array steckst Label[] labelArray. Wenn Du dann deine "Zeilen" durcgehst, hast Du einen Index. Du fängst bei 1 an, deswegen musst Du mit labelArray[Index-1] auf Dein label-Array zugreifen und bekommst das Label was Du haben willst.

greetz
SLi
 
G

Gast

Gast
Ja genau das wollte ich wissen.

Ich muss mir jetzt mal das mit der Variable klar machen und dann die Variante mit dem Array ausprobieren.

Ich benutze gerade die Beispiele aus den Javabüchern und probiere ein paar Sachen in dem Umfeld aus um zu lernen, deshalb auch die unprofessionellen Beschreibungen.

Auf jeden Fall schönen Dank für die Hilfe, ich denke ich brauch jetzt erst mal ein bißchen Zeit um das zu probieren.

Mit den Arrays habe ich noch nichts gemacht, ist denn labelArray ein Objekt wie Label oder TextField usw.

Ich weiß ja, das man Array definieren kann, das habe ich aber immer in dem Zusammenhang, Datenstrukturen in Form von Tabellen mit Werten gesehen, Sie als Struktur für Felder zu nutzen kenn ich noch nicht.

mfg
Jupp
 
G

Gast

Gast
Eine Frage noch:

Der Wert der Variabel : AusgabeFeldName ist abhängig vom Schleifendurchlauf ausgabe1 bis ausgabe2.

Ich habe das richtig verstanden, wenn ich denke

es gibt keine Möglichkeit die Variable
AusgabeFeldName erst auszuwerten und dann das Label AktAusgabe zu erzeugen.

Ich denke da an Notationen in ACCESS, dort kann man
Feld!["FeldName"]
oder Feld(VariableFeldName)

verwenden. Dann wird die Variable in den runden Klammern erst ausgewertet.
 

sliwalker

Top Contributor
Hoi,

kein Ding.
Ist schon richtig, dass ein Array eine Struktur ist, um mehrere Dinge des gleichen Typs gebündelt im Programm vorzuhalten.

Ein int-Array nimmt nur ints auf, ein String-Array nur Strings und man kann eben auch Label in ein Array packen, sofern man das Array vom Typ Label macht.

Aber mit den JavaBüchern schaffst Du das schon. Ist das gleiche wie mit int oder string.

greetz
SLi
 

sliwalker

Top Contributor
Code:
	void meineMethode() {

		// Variablendeklaration __________________________
		int FlagVorz; // Statische Variable
		int Zeilen;
		int Zahl; // Normale Variable
		int BasisZahl; //
		String AusgabeFeldName; //
		Random r = new Random();

		// Variablen Inialisierung
		Zahl = 1;
		FlagVorz = 1;
		Zeilen = 1;
		Zahl += 47;
		AusgabeFeldName = "";

		for (Zeilen = 1; Zeilen < 7; ++Zeilen) {

			// Datentypenkonvertierung von String nach Integer
//			Integer BasisWert = new Integer(TP11.getText());
//			BasisZahl = BasisWert.intValue();
			
			// SLi: Das geht auch so...
			// ... Exceptions mal außen vor...
			BasisZahl = Integer.parseInt(TP11.getText());

			FlagVorz = Math.abs(r.nextInt()) % 2;
			if (FlagVorz == 0)
				Zahl = BasisZahl + Math.abs(r.nextInt()) % 6;
			else
				Zahl = BasisZahl - Math.abs(r.nextInt()) % 6;

			// System.out.println(AusgabeFeldName);

			AusgabeFeldName = "ausgabe" + (Zeilen);
			
			// Diese zeile gibt Dir genau das Label zurück, was Du haben willst. 
			// Ob das speichern in einer anderen Variable nötig ist, weiß ich nicht...
			Label AktAusgabe = meinLabelArray[Zeilen-1]; 

			// Ginge auch so:
			meinLabelArray[Zeilen-1].setText(" " + Zahl);

			ausgabe2.setText(AusgabeFeldName);
		}

	}


Nochmal allgemein:
1. Variablennamen bitte klein schreiben.
2. Variablen im kleinst möglichen und größt nötigen Bereich definieren. Heißt...nur da wo sie gebraucht werden... nicht per se oben in der Methode.

greetz
SLi
 
G

Gast

Gast
Super !!!

und schönen Dank für den Tip mit den Variablen, ich werde das für die Zukunft beherzigen.

Ich probierts heute abend mal aus, und geh die Klasse noch mal durch.

Recht herzlichen Dank für Deine Mühe.
Einfach nur Klasse.

mfg
Jupp
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
B VAriables update in for-Schelifen Java Basics - Anfänger-Themen 3
M synchronized variables? Java Basics - Anfänger-Themen 8
C Environment variables Java Basics - Anfänger-Themen 6
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
S Methode Deklaration Variablen initalisieren Java Basics - Anfänger-Themen 2
J Klassen Klasse als Komponententyp bei Feldern Java Basics - Anfänger-Themen 2
K Warum sind Werte in den Feldern ? Java Basics - Anfänger-Themen 2
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
I Iteration in Feldern Java Basics - Anfänger-Themen 2
H Iterationen in Feldern Java Basics - Anfänger-Themen 3
I Problem mit Feldern Java Basics - Anfänger-Themen 3
D Rekursion mit Feldern - ich raffe es nicht :( Java Basics - Anfänger-Themen 6
E Inhalt von Option Feldern auslesen? Java Basics - Anfänger-Themen 2
A Frag zu Feldern mit den Typ einer Klasse Java Basics - Anfänger-Themen 6
V Zusammenführen von Feldern Java Basics - Anfänger-Themen 9
B Ausgabe von Non-static Feldern Java Basics - Anfänger-Themen 8
L Arrays mit unbestimmt vielen Feldern Java Basics - Anfänger-Themen 7
P Schachbrett mit N x N Feldern Java Basics - Anfänger-Themen 11
G java.lang.reflect -> Werte von Feldern ausgeben Java Basics - Anfänger-Themen 11
Z Terminkalender mittels Klassen und Feldern Java Basics - Anfänger-Themen 2
Z Beispiel Würfelspiel mit Verwendung von Feldern Java Basics - Anfänger-Themen 7
G Problem bei Anwendung von Feldern Java Basics - Anfänger-Themen 5
W Vorgänger bzw. Nachfolger von String Feldern Java Basics - Anfänger-Themen 12
M Feld von Feldern Java Basics - Anfänger-Themen 5
G Auswahl in DropDown feldern in JSP seiten als Action Aufruf Java Basics - Anfänger-Themen 2
E Problem bei Ausgabe von Feldern und Methoden! Java Basics - Anfänger-Themen 2
J Java zum Anzeigen von Notes RT-Feldern unter Windows Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben