Per Textfield Methode ausführen

KingEldarion

Bekanntes Mitglied
Hi, ich habe vor mir sozusagen eine eigene "Konsole" zu basteln für mein Programm über die ich zum testen einige Befehle aufrufen kann.

Also mein Plan ist ich habe ein JTextfield und wenn ich in diesem einen Befehl eingebe(z.B. in meinem Programm Menu.setVisible(true)) und einen Button drücke soll der JFrame Menü geöffnet werden, genau das gleiche soll aber auch mit setter Methoden und wenns geht sogar mit getter-methoden funktionieren.

Wie kann ich das machen. Geil wäre auch wenn ich direkt über diesen JTextfield auch auf die Variablen zugreifen könnte, also z.B. abc = 5, oder abc +=5, oder ähnlich.

Kann man das machen wenn ja, wie?

MfG KingEldarion
 
Hast du denn schon eine Idee, wie du den Text aus dem TextField in das übersetzt, was nachher gemacht werden soll? Wenn nicht wirst du dich erstmal intensiv mit Parsern,Parsergenerator, etc. auseinander setzen müssen.
 
Nein der Befehl soll schon richtig ins Textfield geschrieben wird also z.B.:

static void bsp(int i)...(in der Klasse test)

gibt man dann in die Console ein:

test.bsp(5);

und dann soll das halt einfach nur ausgeführt werden...
 
du stellst dir das glaub ich etwas zu einfach vor... um das auszuführen muss das ja irgendwie in ausführbaren bzw. JVM kompatibelen Code übersetzt werden. Wenn du was in Java programmierst musst du das ja auch erst durch den Compiler schicken.

Am einfachsten fährst du wahrscheinlich, wenn du dir für jede eigegebene Zeile eine Klasse bastelst, die dynamische kompilierst und aufrufst. Das dürfte zwar reichlich inperformant sein, aber alles andere erscheint mir utopisch. Da könnte das hier interessant für dich sein: Add dynamic Java code to your application - JavaWorld
 
So wie ich es verstanden habe, will er doch nur den Namen einer Funktion eingeben, und dann diese Ausführen. Das kannst du jetzt machen indem du ein switch case abfrage nach verschiedenen Strings machst, und dann die gewünschte Funktion ausführst, oder du holst dir per Reflection die Methodennamen deiner Klasse, suchst dir die passende und führst sie aus.
PS: In dem Link steht zb. genau so ein Beispiel, man übergibt der Main einen string und das Programm schaut ob es eine Funktion mit dem Namen findet und führt sie aus.
 
Also ich habe 2 Textfelder das erste um die Klasse zu bestimmen das zweite um die Methode aufzurufen, die Klasse aufzurufen klappt anscheinend einwandfrei aber die Methode aufzurufen nicht:

Java:
String st = TF.getText();
				
				try {
					Class c = Class.forName(st);
					Method a = c.getDeclaredMethod(TF2.getText(), c);
					System.out.println("" + a);
				} catch (ClassNotFoundException e) {
					Framestart.error("Fehler " + e);
				} catch (NoSuchMethodException e) {
					Framestart.error("Fehler " + e);
				} catch (SecurityException e) {
					Framestart.error("Fehler " + e);
				}

Der Error:
Fehler java.lang.NoSuchMethodException: Framestart.Message("Hi")(Framestart)

Falls das einer glaubt, nein es bringt nichts wenn ich noch das Semikolon dahintersetze.

EDIT: Ich glaube ich schaffs grad

EDIT2:

ich habs geschafft das klappt wie ich es auch oben habe, nur dass ich keine Befehle mit Parameter nehmen darf, ich mach das aber lieber mit equals
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben