Wert aus Dialog zurückgeben

Status
Nicht offen für weitere Antworten.

gondor

Bekanntes Mitglied
hallo liebe java-freunde!

leider stoße ich auf ein (simples) problem.

ich rufe aus einer klasse ein dialog-fenster auf:

Code:
ArticCell_Frame_HeaderDialog dlg = new ArticCell_Frame_HeaderDialog(this, propertieValue_Header[1].toString());
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();

das dialog-fenster enthält eine eingabemaske (textfield). nun möchte ich den eingegebenen string, an meine klasse zurückgeben, wenn der button 'ok' gedrückt wurde und das dialog-fenster sich wieder schliesst. doch leider hapert es an dieser problemstellung :(

hier die dialog-klasse:

Code:
public class ArticCell_Frame_HeaderDialog extends JDialog {

    String findString = "";
    String tempString = "";

    JPanel jPanel1 = new JPanel();
    JLabel jLabel1 = new JLabel();
    BorderLayout borderLayout1 = new BorderLayout();
    JPanel jPanel2 = new JPanel();
    JTextField jTextField1 = new JTextField();
    JLabel jLabel2 = new JLabel();
    FlowLayout flowLayout1 = new FlowLayout();
    JButton Header_jButton_OK = new JButton();


    public ArticCell_Frame_HeaderDialog(Frame parent, String findString_) {
        super(parent);
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        this.findString = findString_;
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    private void jbInit() throws Exception {
        jLabel1.setFont(new java.awt.Font("Dialog", 1, 15));
        jLabel1.setAlignmentX((float) 5.0);
        jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel1.setText("There is no Header-Information found in Data-File!");
        jPanel1.setLayout(borderLayout1);
        jPanel2.setLayout(flowLayout1);
        jTextField1.setText("");
        jTextField1.setColumns(15);
        jLabel2.setText("Please enter the Value for " + findString + " :");
        Header_jButton_OK.setMaximumSize(new Dimension(45, 22));
        Header_jButton_OK.setMinimumSize(new Dimension(45, 22));
        Header_jButton_OK.setPreferredSize(new Dimension(45, 22));
        Header_jButton_OK.setText("ok");
        Header_jButton_OK.addActionListener(new ArticCell_Frame_HeaderDialog_Header_jButton_OK_actionAdapter(this));
        this.setTitle("Headerinformation");
        this.getContentPane().add(jLabel1, BorderLayout.NORTH);
        this.getContentPane().add(jPanel2, BorderLayout.SOUTH);
        jPanel2.add(jLabel2, null);
        jPanel2.add(jTextField1, null);
        jPanel2.add(Header_jButton_OK, null);
        this.getContentPane().add(jPanel1, BorderLayout.CENTER);
    }

    /*nach drücken soll der wert an die klasse zurückgegeben werden und das dialog-fenster soll sich schliessen*/
    void Header_jButton_OK_actionPerformed(ActionEvent e) {
        tempString = jTextField1.getText();
    }

}


class ArticCell_Frame_HeaderDialog_Header_jButton_OK_actionAdapter implements java.awt.event.ActionListener {
    ArticCell_Frame_HeaderDialog adaptee;

    ArticCell_Frame_HeaderDialog_Header_jButton_OK_actionAdapter(ArticCell_Frame_HeaderDialog adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.Header_jButton_OK_actionPerformed(e);
    }
}

wie ist das zu lösen?
 
B

Beni

Gast
Schreib noch ein paar Getter in deinen Dialog:

Code:
public class HeaderDialog extends JDialog{
  ...

  public String getFind(){
    return findString;
  }
}

Code:
...
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show(); 

String findString = dlg.getFind();
 

gondor

Bekanntes Mitglied
@beni

manchmal sieht man den wald vor lauter bäumen nicht. die idee ist mir gleich nach dem posting gekommen ;) trotzdem vielen lieben dank!
 

Xandro

Bekanntes Mitglied
Moin,

ich zieh' das Thema mal wieder hoch, weil ich kein neues anfangen will.
Mein Problem ist genau andersrum, wie das des Thread-Erföffners.

Ich will einen String von meiner GUI einem Dialog übergeben.

Mein Code, mit dem ich es versucht habe:

GUI.java
Code:
GUInew dlg = new GUInew();
dlg.setSize(400, 400);
dlg.setLocationRelativeTo(null);
dlg.setModal(true);

dlg.setDB(jComboBox_edit_dbselect.getSelectedItem().toString());

dlg.show();

GUInew.java
Code:
  public void setDB(String db) {
    DB = db;
  }

Also eine Wertübergabe mit einer setter-Methode.
Das Problem ist, dass ich im Dialog für DB immer einen Null-Wert bekomme.
Demnach muss ich irgendwas falsch machen,
aber was?

Gruss,
Xan
 

L-ectron-X

Gesperrter Benutzer
Hast Du in GUInew eine Instanzvariable DB vom Typ String deklariert? Dann sollte das gehen.
Code:
dlg.setDB((String)jComboBox_edit_dbselect.getSelectedItem());
Alternativ dazu kannst Du auch den String dem Konstruktor von GUInew beim Aufruf übergeben.
 

Xandro

Bekanntes Mitglied
Also eine globale Instanzvariable DB hab ich als String deklariert,
sonst würde meine Wertübergabe DB = db nicht funzen.
Aber wie gesagt -> Null.

Ich hab mich mal mit Deinem Alternativvorschlag beschäftigt,
nur habe ich das Problem, dass ich nicht weiss, wie ich den Konstruktor füllen soll.

Code:
public GUInew(Frame frame, String title, boolean modal) {
  super(frame, title, modal);
  try {
      jbInit();
      pack();
  }
  catch (Exception ex) {
      ex.printStackTrace();
  }
}

public GUInew() {
  this(null, "", false);
}

Weil wenn ich was einfüge, meckert der zweite Konstruktor rum.
Und wenn ich meine Variable nur im zweiten Konstruktor übergebe,
wird es wieder ein Null-Wert
 
G

Gast

Gast
Du könntest auch einfach die show() oder setVisible() Methoden des Dialogs überschreiben und denen den String übergeben:
Code:
dlg.show("irgendein String");
 

L-ectron-X

Gesperrter Benutzer
Ich dachte da an so etwas:
Code:
public class GUInew extends JDialog {
private String db;

  public GUInew(Frame frame, String title, boolean modal, String str) { 
    super(frame, title, modal);
    db = str;


  }
}
 

Xandro

Bekanntes Mitglied
Jop L-ectron-X,

genau so habe ich das versucht, aber dann meckert dieser Konstruktor rum:

Code:
public GUInew() { 
  this(null, "", false); 
}

Der will dann nämlich noch einen String bekommen,
aber DB kann ich ihm nicht liefern, da motzt der rum.

Fehlermeldung:

Code:
"GUInew.java": Symbol kann nicht aufgelöst werden: Konstruktor GUInew (<nulltype>,java.lang.String,boolean)in Klasse sqldb.GUInew in Zeile 34, Spalte 5
"GUInew.java": JDialog(java.awt.Frame,java.lang.String,boolean) in javax.swing.JDialog ist nicht in public-Klasse oder -Interface definiert; man kann von außerhalb des Package darauf nicht zugreifen in Zeile 34, Spalte 5
 

L-ectron-X

Gesperrter Benutzer
Kannst Du mal die gesamte Klasse GUInew posten?
Das muss gehen, Du hast da irgendwo einen Fehler eingebaut, habe auch schone eine Vermutung, möchte mir aber gerne erst mal den Quellcode ansehen.
 

Xandro

Bekanntes Mitglied
Ja sicher hier der Source:

Code:
package sqldb;

import java.awt.*;
import javax.swing.*;

public class GUInew
    extends JDialog {

  private String DB;

  JPanel panel1 = new JPanel();
  JLabel jLabel_create_header = new JLabel();

  public GUInew(Frame frame, String title, boolean modal) {
    super(frame, title, modal);
    try {
      jbInit();
      pack();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public GUInew() {
    this(null, "", false);
  }
  
  public void setDB(String db){
    db = DB;
  }

  private void jbInit() throws Exception {
    panel1.setLayout(null);
    jLabel_create_header.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel_create_header.setText("- Create A New Table in Database '" + DB +
                                 "' -");
    jLabel_create_header.setBounds(new Rectangle(19, 27, 482, 15));
    getContentPane().add(panel1);
    panel1.add(jLabel_create_header, null);
  }
}

Ist die ursprüngliche Variante, wie ich sie machen wollte,
da das mit dem Konstruktor ja nicht funzt.
 

L-ectron-X

Gesperrter Benutzer
Das mit dem Konstruktor, so wie ich ihn geschrieben habe, geht auch. Wichtig ist der richtige Aufruf bzw. Instanziierung von GUInew.
Scheinbar hast Du das bisher verkehrt gemacht.
Aber hier ist trotzdem ein Fehler drin, klein aber oho! :wink:
Zeile 30. Beide Variablen miteinander tauschen!
Code:
DB = db;
Dann sollte das mit der setDB()-Methode funktionieren.
 

Xandro

Bekanntes Mitglied
Also ich habs nochmal mit den Konstruktor versucht:

Code:
package sqldb;

import java.awt.*;
import javax.swing.*;

public class GUInew
    extends JDialog {

  private String DB;

  JPanel panel1 = new JPanel();
  JLabel jLabel_create_header = new JLabel();

  public GUInew(Frame frame, String title, boolean modal, String db) {
    super(frame, title, modal);
    DB = db;
    try {
      jbInit();
      pack();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

Soweit gibts nichts zu beklagen, aber jetzt:

Fehler:
Code:
  public GUInew() {
    this(null, "", false);
  }
Es wird ja ein weiterer String für this erwartet.
Doch kann ich es nur so realisieren, weil alles andere nicht angenommen wird:

Code:
  public GUInew() {
    this(null, "", false, "");
  }
Das heisst ich muss einen Leerstring einfügen,
denn sonst kommt die Fehlermeldung wie oben.

Und zu dem Thema setter-Methode:
Egal wie ich es dreh und wende, da wird immer ein Null-Wert übergeben.

Ach menno, bin schon am Verzweifeln.
Kann ich Dir mal das Programm bereitstellen und Du schaust,
was da noch fehlerhaft sein könnte, ich hab jetzt alle Möglichkeiten durch.
 

Xandro

Bekanntes Mitglied
So, mein Problem lässt sich nicht lösen, die Übergabe der Werte erfolgt einfach nicht.
Immer wieder ein Null-String *seufz*

Ich habs mit etlichen Konstruktoränderungen und -aufrufen versucht,
aber nichts.
Auch die Setter-Methodik hat sich nicht bewährt.

Ich weiss auch nicht mehr weiter ...

http://www.xandro.de/sqldb.zip
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Frame - Panel - Dialog rückgabe wert AWT, Swing, JavaFX & SWT 5
_user_q ThreadPool schedule Wert auf false setzen AWT, Swing, JavaFX & SWT 1
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
S hashCode int wert AWT, Swing, JavaFX & SWT 6
B Slider-Wert an anderen Slider übergeben AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
S Caps-Lock Überprüfung gibt falschen Wert zurück AWT, Swing, JavaFX & SWT 1
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
Hatsi09 JCombobox default wert AWT, Swing, JavaFX & SWT 6
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
B AWT GUI nimmt nur 19 Ziffern an, obwohl Max Wert von Double größer ist AWT, Swing, JavaFX & SWT 7
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
K Swing DefaultListModel braucht zu lange, um Wert zu setzen AWT, Swing, JavaFX & SWT 7
T JavaFX Falscher Wert getLayoutBounds? + Tipps zum Code-Aufbau? AWT, Swing, JavaFX & SWT 8
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
C JavaFX mit .setText() befülltes Textfield liefert anschließend mit .getText() den ursprünglichen Wert? AWT, Swing, JavaFX & SWT 1
M JavaFX berechneten Wert in TableView schreiben AWT, Swing, JavaFX & SWT 1
M Jtable gibt -1 wert bei selectedRow und Column AWT, Swing, JavaFX & SWT 3
J Slider Wert anzeigen AWT, Swing, JavaFX & SWT 15
M Event Handling vertical ValueProperty() alter Wert gleich neuer Wert AWT, Swing, JavaFX & SWT 4
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
A Slider soll einen Wert übergeben AWT, Swing, JavaFX & SWT 1
R JavaFX Wert einer ChoiceBox bekommen ohne Lambdas AWT, Swing, JavaFX & SWT 11
M JavaFX Wert aus Tabellenzelle auslesen AWT, Swing, JavaFX & SWT 4
T SWT Mysql Tabelle zeigt immer nur den ersten Wert immer wieder an AWT, Swing, JavaFX & SWT 3
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
W JTextfield - Wert lässt sich nicht setzen AWT, Swing, JavaFX & SWT 3
A Unterklasse schreibt Wert in JFrame AWT, Swing, JavaFX & SWT 4
M SWT CCombo immer so groß wie der größte Wert! AWT, Swing, JavaFX & SWT 0
T Int-Wert aktualisieren? AWT, Swing, JavaFX & SWT 9
T Einen Variablen Wert in einem TextField AWT, Swing, JavaFX & SWT 4
M Swing Alter Wert von einer Variable wird verwendet AWT, Swing, JavaFX & SWT 8
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
M JSlider-Wert ändern, ohne ein ChangeEvent auszulösen AWT, Swing, JavaFX & SWT 4
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
A Ermittelter Wert auf Formular übertragen. AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
N Button Wert zuweisen AWT, Swing, JavaFX & SWT 3
Y JSlider Wert auslesen (Kategorien) AWT, Swing, JavaFX & SWT 2
R JFreeChart: nur jeden n-ten Wert auf der X-Achse anzeigen AWT, Swing, JavaFX & SWT 5
L Swing Falscher Wert nach eigener Sortierung (JTable) AWT, Swing, JavaFX & SWT 2
N jcomboBox anderer Wert als Anzeige AWT, Swing, JavaFX & SWT 6
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
R Zeile in JTable anhand von Wert einfärben AWT, Swing, JavaFX & SWT 2
C Zwei JSpinner mit dem gleichen Wert AWT, Swing, JavaFX & SWT 2
C Swing JTable: edit Cell -> versteckten Wert ändern AWT, Swing, JavaFX & SWT 12
B JSlider - Wert am Mouszeiger anzeigen lassen AWT, Swing, JavaFX & SWT 6
X Den Wert von JSpinner setzen ohne Event AWT, Swing, JavaFX & SWT 3
P Combobox liesst falschen Wert AWT, Swing, JavaFX & SWT 10
M SWT DateTime per default null Wert ? AWT, Swing, JavaFX & SWT 3
L ArrayList Wert löschen klappt nicht AWT, Swing, JavaFX & SWT 11
C jtable hintegrundfarbe integer wert AWT, Swing, JavaFX & SWT 14
S Swing noch nicht übergebenen Wert aus JComboBox auslesen AWT, Swing, JavaFX & SWT 4
S JTable Wert so bekommen wie er angezeigt wird..? AWT, Swing, JavaFX & SWT 2
I Swing JComboBox Wert setzen AWT, Swing, JavaFX & SWT 4
S Swing In JComboBox Wert und ID integrieren AWT, Swing, JavaFX & SWT 16
M Swing JTextFeld Wert in anderer Klasse aufrufen AWT, Swing, JavaFX & SWT 13
G JTable - bei falscher Eingabe wird alter Wert genommen. AWT, Swing, JavaFX & SWT 2
P Bei JComboBox einem Eintrag Wert zuweisen AWT, Swing, JavaFX & SWT 7
A Wert einer JComboBox auslesen AWT, Swing, JavaFX & SWT 1
B JTable Wert in Vector einlesen AWT, Swing, JavaFX & SWT 4
G JComboBox - Anzeige mit Wert verknüpfen AWT, Swing, JavaFX & SWT 3
V Start Button und Wert Eingabe in ein Fenster AWT, Swing, JavaFX & SWT 2
L JTree Frage -> nur den Wert des Knotens ausgeben? AWT, Swing, JavaFX & SWT 2
L Jcombobox + value Wert AWT, Swing, JavaFX & SWT 7
M Wert von einem Fenster zum anderen übergeben AWT, Swing, JavaFX & SWT 3
J Problem mit Alpha-Wert beim Button AWT, Swing, JavaFX & SWT 3
S JTextField. Bei Abbruch vorherigen Wert wiederherstellen AWT, Swing, JavaFX & SWT 2
D Wert von Kasse2 an Klasse1 übergeben AWT, Swing, JavaFX & SWT 3
D Scrollbalken Wert setzen AWT, Swing, JavaFX & SWT 6
S Eingegeben Wert wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
S Methoden return wert? AWT, Swing, JavaFX & SWT 7
O MouseListener - Wert-Übergabe AWT, Swing, JavaFX & SWT 3
G JRadioButton beim deselektieren Wert ändern. AWT, Swing, JavaFX & SWT 2
M JTextField auslesen und Wert vergleichen? AWT, Swing, JavaFX & SWT 2
W JTextfield aktualisieren / Wert aus Datenbank neu abfragen AWT, Swing, JavaFX & SWT 2
T JTable überschreibt alten Wert AWT, Swing, JavaFX & SWT 12
T Jtable falscher Wert wird übergeben AWT, Swing, JavaFX & SWT 13
O JComboBox nach erkennt Wert nach setSelectedItem() nicht AWT, Swing, JavaFX & SWT 3
D JComboBox.getSelectedIndex() liefer immer 0 als Wert zurück? AWT, Swing, JavaFX & SWT 11
D Doppelklick in JList --> Wert auslesen AWT, Swing, JavaFX & SWT 8
G jspinner schrittweite in Abhängigkeit vom aktuellen Wert AWT, Swing, JavaFX & SWT 3
B Wert bei JFormattedTextField automatisch aktualisieren AWT, Swing, JavaFX & SWT 2
R Wert von ScrollBar ausgeben AWT, Swing, JavaFX & SWT 7
R JTable - Boolean-Wert aus Zelle auslesen. AWT, Swing, JavaFX & SWT 9
G Setzen wert in JTextField AWT, Swing, JavaFX & SWT 11
H JList: Mit ausgewähltem Wert weiterarbeiten AWT, Swing, JavaFX & SWT 16
E x wert von einem vorhandenen punkt abziehen? AWT, Swing, JavaFX & SWT 3
B Wert einer JCombobox in einer JTable setzen AWT, Swing, JavaFX & SWT 2
H Den wert aus einem Text field holen AWT, Swing, JavaFX & SWT 5
R JTable valueChanged() {wert an GUI} AWT, Swing, JavaFX & SWT 5
R wert aus editable JComboBox holen AWT, Swing, JavaFX & SWT 2
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben