String -> Variable

  • Keine Ahnung wie ich die Überschrift am besten formuliere, ich will aus einem String eine Referenz auf eine Variable holen, also in der Form

    Code
    JButton button = new JButton("OK");
    String str = "button";
    str.toObject().setText("Nicht OK"); //sowas in der Art suche ich

    Es gibt da eine Möglichkeit mit Class.forName(), allerdings liefert mir die nur neue Instanzen, ich will aber genau dieses eine Objekt JButton.

    Ideen?

  • Mir fällt jetzt nur die Reflection API von Java, aber ich bezweifle, dass man damit auf lokale Variablen zugreifen kann.

    Aber vielleicht kannst du Informationen zu der konkreten Problemstellung liefern, vermutlich gibt es einen anderen Lösungsweg als den von dir angestrebten.

  • du könntest den den button in eine hashmap tun.

    das sähe dann ca. so aus:

    Code
    JButton button = new JButton("OK");
    
    
    HashMap map = new HashMap();
    map.put("myButton",button);

    und rausholen kannst du das objekt dann mit

    map.get("myButton");

    Patient: "Doctor, doctor, my eye hurts when I poke it with a spoon."
    Doctor: "Don't poke it, then."

  • Die Lösung mit Jython ist zwar sehr kreativ, aber im Prinzip ist genau eine Hashmap gesucht und die gibt's in Java... ich würd' also auch auf jeden Fall die Finger von sowas wie Reflection lassen in dem Fall.

  • Naja, im konkreten Fall gehts um die Einstellung von Swing-Komponenten-Properties anhand eines Property-Files.

    Da steht also zB. drin "animationSpeedSlider=50", und dann soll der JSlider mit Namen "animationSpeedSlider" auf den Wert 50 gesetzt werden.
    Habs jetzt anders gelöst, allerdings ist dadurch die Wiederverwendbarkeit nicht gegeben, ich möchte die gesamte Routine weiterverwendbar machen, und da wäre das eben schon praktisch.

  • ich verstehe nicht ganz warum du das property genau so nennen musst wie das objekt das das attribut dann übernimmt.

    da gibts doch andere methoden um property files einzulesen und die werte zu übernehmen.

    aber du wirst schon deine gründe haben. mit den von dir angegebenen hinweisen zur aufgabenstellung ist es leider schwer eine passende antwort zu geben.
    :wave:

    Patient: "Doctor, doctor, my eye hurts when I poke it with a spoon."
    Doctor: "Don't poke it, then."

  • ich verstehe nicht ganz warum du das property genau so nennen musst wie das objekt das das attribut dann übernimmt.

    Naja, ich hab mehrere JFrames mit unterschiedlichen Steuerelementen, deren Einstellungen ich speichern will. Und da ich nicht jedesmal die store() und load()-Methoden hardcoden will wäre sowas eben schon praktisch. Auf eine andere Methode bin ich noch nicht draufgekommen :)

  • Naja, ich hab mehrere JFrames mit unterschiedlichen Steuerelementen, deren Einstellungen ich speichern will. Und da ich nicht jedesmal die store() und load()-Methoden hardcoden will wäre sowas eben schon praktisch. Auf eine andere Methode bin ich noch nicht draufgekommen :)


    Swing Application Framework kennst du?
    Da hast du Resource-Files zum Auslesen und Setzen von Properties

    https://appframework.dev.java.net/intro/index.html
    http://blogs.sun.com/TechDaysEvents…ework_and_beans

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!