kostenloser Webspace werbefrei: lima-city


Wert übergeben

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    p**i

    Moin,

    also ich habe ein Problem bei einer Wert?bergabe:

    Ich habe eine GUI.java als Hauptframe sowie eine GUInew.java als Dialog.
    In der GUI habe ich einen String deklariert und initialisiert.
    Diesem will ich nun an den Dialog ?bergeben,
    wollte es versuchen so zu realisieren:

    - GUInew.java -

    String DB; // global

    public void setDB(String db){
    DB = db;
    }

    - GUI.java -

    GUInew dlg = new GUInew();
    dlg.setSize(400, 400);
    dlg.setLocationRelativeTo(null);
    dlg.setModal(true);
    dlg.setDB(jComboBox_edit_dbselect.getSelectedItem().toString());
    dlg.show();


    Also eine ?bergabe von einem String aus einer JComboBox.
    Nur leider ?bergibt die Methode immer nur einen Null-Wert.
    Kann mir einer sagen, wie ich das umformen muss?

    Gruss,
    Puni
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Vielleicht kannst du noch ein bisschen mehr schreiben.
    Denn wo jetzt dein Fehler ist kann man so nicht sagen.

    Wenn es nicht zu gro? ist poste doch mal den ganzen Code.
    Oder Stelle die java-Datein ins Netz und poste die Links.

    Jens
  4. Autor dieses Themas

    p**i

    Also der restliche Code w?re ?berfl?ssig,
    da der sich gar nicht auf das Problem bezieht.

    Wie gesagt:

    Ich deklariere eine globale Instanzvariable DB in der GUInew.java als String.
    Als n?chstes die Methode zur Wert?bergabe (siehe oben) setDB().
    Darin ?bergebe ich einen aus der GUI.java gelieferten String db an die DB-Variable.
    Dieser String wurde mit Hilfe der setDB(String)-Methode ?bermittelt,
    jedoch ist dieser String leer.
    Normalerweise passiert sowas nur, wenn die Methode private ist.

    Reicht mir schon, wenn jemand sowas schonmal gemacht hat
    und er mir sagen k?nnte wie er die Daten ohne Konstruktor ?bergeben hat.

    Gruss,
    Puni

  5. Also der restliche Code w?re ?berfl?ssig,
    da der sich gar nicht auf das Problem bezieht.

    Wie gesagt:

    Ich deklariere eine globale Instanzvariable DB in der GUInew.java als String.
    Als n?chstes die Methode zur Wert?bergabe (siehe oben) setDB().
    Darin ?bergebe ich einen aus der GUI.java gelieferten String db an die DB-Variable.
    Dieser String wurde mit Hilfe der setDB(String)-Methode ?bermittelt,
    jedoch ist dieser String leer.
    Normalerweise passiert sowas nur, wenn die Methode private ist.

    Reicht mir schon, wenn jemand sowas schonmal gemacht hat
    und er mir sagen k?nnte wie er die Daten ohne Konstruktor ?bergeben hat.

    Gruss,
    Puni


    Das Problem ist das es so wie du dir es gedacht hast gehen m?sste.
    Wenn es nicht geht kann es nur an was liegen, was du nicht geschreiben hast.
    Wenn es z.B. eine Variable db gibt, k?nnte es z.B. Probleme geben (bin mir da aber nicht so sicher).
    Aber eigendlich auch nicht. Und das einmal DB Gross geschieben ist und eine zweite Variable db klein geschreiben ist, m?sste ok sein. Denn Java unterscheidet zwischen gross und kleinschreibung. Aber vielleicht solltest du mal die Namen ?ndert (k?nnte daran liegen). Und ausserdem macht man eigendlich nicht.

    Aber wie gesagt, es m?sste so gehen. Kann es sein da du einen null String der Methde ?bergibst?

    Also mal kurz erkl?rt.
    Alle nicht einfachen Datentypen (String ist einer) werden durch Referns?bergabe ?bergeben.
    Alle Einfachen (z.B. int) durch Wert?bergabe.

    Jens
  6. 1. Bist du dir sicher, dass in der ComboBox aus etwas ausgew?hlt wurde.

    2. Nimm nicht toString() sonder eine Definierte Methode. Davon mal abgesehen: Was schiebst du da eigentlich f?r Objekte rein?
  7. g*********b

    globale Instanzvariable DB???

    was ist eine globale Insatnzvariable???

    In Java gibt es gar keine globalen Variablen.

    M?glicherweise liegt Dein Problem genau da,

    Du versuchst auf eine Variable zuzugreifen, die im aktuellen Kontext zwar bekannt ist (sonst k?nntest Du das Ganze gar nicht kompilieren), aber innerhalb des aktuellen Kontexts nicht initialisiert wurde.

    Noch trivialer w?re die folgende Variante:

    Es ist gar kein Item ausgew?hlt!

    Im Ernst: was soll Dein Programm tun, wenn nichts ausgew?hlt ist?????:confused::confused::confused::confused::confused::confused:

    greetinx

    WS
  8. Du hast deinen Dialog auf Modal gesetzt (also so, dass nichts anderes au?er dem Dialog ausgef?hrt werden kann und somit wird die Funktion setDB() erst aufgerufen wenn der Dialog wieder geschlossen wurde. Modal verhindert n?mlich nicht nur den Zugriff auf andere Fenster sonder stoppt die Abarbeitung aller funktionen nach dem Aufruf des Dialoges und setzt die Abarbeitung wieder fort, sobald der Dialog geschlossen wurde. Die kannst du umgehen in dem du in GUI.java eine Funktion:

    public String getDB()
    {
    return (String)jComboBox_edit_dbselect.getSelectedItem();
    }


    definierst und dann aus GUInew.java darauf zugreifst. Das halte ich auch f?r sehr viel sinnvoller, denn vielleicht gibt es ja noch eine andere Klasse die diesen Wert gebrauchen kann.

    Wenn ich nicht recht habe, dann wei? ich auch nicht weiter und du solltest wirklich mal den Quelltext posten, denn es kann an sehr vielen Faktoren liegen, dass es nicht funktioiert.

    Ansonsten kann ich dir nur den Debugger von Eclipse empfehlen, von dem ich hoffe, dass du es nutzt :)

    Gru?,
    Phosphat
  9. g*********b

    Die eleganteste L?sung ist, aus GUInew eine neue Klasse abzuleiten, die eine entsprechende Variable hat, der Wert wird an den Konstruktor ?bergeben, und entsprechend der Membervariablen zugewiesen. Dann hat der Dialog diesen Wert zur Verf?gung.

    FF
    WS
  10. ueberpruef mal schritt fuer schritt mit ausgaben, wo der nullwert herkommt, es gibt da einige moeglichkeiten:

    - getSelectedItem()
    - toString())
    - setDB()

    woran siehts du denn jetzt den nullwert? wird in show die variable DB ausgegeben? was passiert z.b. wenn du

    dlg.setDB("blabla");

    ausfuehrst.

    die set-Methode sollte ganz korrekt heissen:

    this.DB = db;

    verscuh das mal
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!