Eigener Dialog mit Rückgabe -> Warten auf Button

Hein_nieH

Bekanntes Mitglied
Hallo,

ich versuche einen Eigen Dialog zu erstellen und das Ergebnis auszuwerten.
Der Aufruf des Dialoges soll wie folgt erfolgen.

Java:
import MyJDialog.MyInputDialog;
import MyJDialog.TestMyInputDialog;
import MyJDialog.ReturnClass;


public class MainDialog
{
    public static void main (String[] arg)
    {
        ReturnClass ret  = new ReturnClass("bla bla", "blub blub", "blobb bloob");
        ret = TestMyInputDialog.showDialog("Test Input Dialog", ret);
      
        //hier sollte eigentlich gewartet werden,
        //bis im Dialog ein Button gedrueckt wurde
        //PASSIERT ABEr NICHT
      
        System.out.println(  "Ergebnis " + ret.getTest1() + " -> " + ret.getTest2() + " -> " + ret.getTest3() );
      
    }//main
}//class

Der Dialog soll das Programm solange unterbrechen, bis im Dialog der OK oder Cancel Button gedrückt wurde.
Nach dem Schliessen des Dialoges soll der Rückgabewert ausgewertet werden.
Das passiert leider nicht.
Die main-Routine arbeitet trotz geöffneten Dialoges weiter.
Hat jemand eine Idee was ich in der Dialogklasse verändern muss?

Hier die Dialogklasse:

Java:
package MyJDialog;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TestMyInputDialog
{
    private static ReturnClass result = null;
    private static JDialog dialog;
    private static JTextField txtField1,txtField2,txtField3;
  
    private String strText1="null", strText2="null", strText3="null";
    private TestMyInputDialog(String title, Object obj)
    {
        if (obj != null)
        {
            if (obj instanceof ReturnClass)
            {
                result=(ReturnClass)obj;
                strText1 = result.getTest1();
                strText2 = result.getTest2();
                strText3 = result.getTest3();
            }//if instanceof
        }//if obj != null
      
        //GUI bauen
        dialog= new JDialog();
        dialog.setTitle(title);
        dialog.setSize(400, 200);
        dialog.setModal(true);
      
        //Button Panel
        JPanel pnlButton=new JPanel();
        JButton butCancel=new JButton("Cancel");
        JButton butOK=new JButton("OK");
        pnlButton.add(butCancel);
        pnlButton.add(butOK);
      
        //Text Panel
        JPanel pnlText=new JPanel();
        txtField1 = new JTextField(30);
        txtField2 = new JTextField(30);
        txtField3 = new JTextField(30);
        pnlText.add(txtField1);
        pnlText.add(txtField2);
        pnlText.add(txtField3);
      
        dialog.add(pnlButton, BorderLayout.SOUTH);
        dialog.add(pnlText, BorderLayout.CENTER);
        dialog.setVisible(true);
                      
        //Werte zuweisen
        txtField1.setText(strText1);
        txtField2.setText(strText2);
        txtField3.setText(strText3);
      
        butOK.addActionListener( new clsListenerOK() );
        butCancel.addActionListener( new clsListenerCancel() );
      
    }//Constructor MyInputDialog
  
    class clsListenerOK implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent arg0)
        {
            DoButtonOK();
        }//actionPerformed
    }//class clsOkListener
  
    class clsListenerCancel implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent arg0)
        {
            DoButtonCancel();
        }//actionPerformed
    }//class clsOkListener
  
    private void DoButtonOK()
    {
        if (result==null)
        {
            //falls Null übergeben wurde
            ReturnClass result=new ReturnClass();
        }//if
          
        result.setTest1( txtField1.getText() );
        result.setTest2( txtField2.getText() );
        result.setTest3( txtField3.getText() );
        dialog.setVisible(false);
        dialog.dispose();
    }
  
    private void DoButtonCancel()
    {
        dialog.setVisible(false);
        dialog.dispose();
    }
  
    public static ReturnClass showDialog(String title, Object obj)
    {
        TestMyInputDialog dlgMy = new TestMyInputDialog(title, obj);
      
        return result;
    }//showDialog

}//class MyInputDialog

Für einen Hinweis wäre ich sehr dankbar.

Hinweis: Bei einem Bibliotheksbesuch habe ich in einem Javahanbuch von Dirk Louis mal ein Beispiel gefunden.
Da ging es um einen Dialog mit drei Slidern, ich glaube das Beispiel hieß Audioregler.
Leider ist die Bibliothek derzeit geschlossen.

Gruss Hein_nieH
 
Zuletzt bearbeitet:

Hein_nieH

Bekanntes Mitglied
Problem gelöst:

Java:
public static ReturnClass showDialog(String title, Object obj)
{
    TestMyInputDialog dlgMy = new TestMyInputDialog(title, obj);

    dialog.setvisible(true) // Muss hier gesetzt werden und nicht im Konstruktor

    return result;
}//showDialog

Gruss Hein_nieH
 

Blender3D

Top Contributor
Hier die Dialogklasse:
Das lässt sich einfacher lösen. ;)

Java:
import javax.swing.JOptionPane;
public class start {
    public static void main(String[] args) {
        String[] label = { "Text A", "Text B", "Text C", "Text D" };
        MultiInputDialog dialog = new MultiInputDialog(label, "Test multi input");
        if (dialog.showDialog(null, JOptionPane.OK_OPTION, JOptionPane.DEFAULT_OPTION)) {
            String[] result = dialog.getText();
            for (int i = 0; i < label.length; i++)
                System.out.print(label[i] + "\t-> " + result[i] + "\n");
        }
    }
}

Java:
import java.awt.Component;
import java.util.Arrays;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class MultiInputDialog {
    private JTextField[] text;
    private String[] label;
    private String headline;

    public MultiInputDialog(String[] label, String headline) {
        this.label = Arrays.copyOf(label, label.length);
        text = new JTextField[label.length];
        for (int i = 0; i < label.length; i++)
            text[i] = new JTextField();
        this.headline = headline;
    }

    private Object[] getObjects(String[] labels) {
        Object[] fields = new Object[labels.length * 2];
        int cnt = 0;
        for (int i = 0; i < fields.length - 1; i += 2) {
            fields[i] = labels[cnt];
            fields[i + 1] = text[cnt];
            cnt++;
        }
        return fields;
    }

    public String[] getLabel() {
        return Arrays.copyOf(label, label.length);
    }

    public String[] getText() {
        String[] result = new String[text.length];
        for (int i = 0; i < text.length; i++)
            result[i] = text[i].getText();
        return result;
    }

    public void reset() {
        for (JTextField t : text)
            t.setText("");
    }

    public boolean showDialog(Component parent, int optionType, int messageType) {
        return JOptionPane.showConfirmDialog(parent, getObjects(label), headline, optionType,
                messageType) == JOptionPane.OK_OPTION;
    }
}
 

Hein_nieH

Bekanntes Mitglied
Hallo Blender3D,

vielen Dank für die Mühe. Ich werde mir den Code genauer anschauen.
Zunächst bin ich aber froh für das Problem überhaupt eine Lösung gefunden zu haben.

Mit freundlichen Gruessen
Hein_neH
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
K eigener button in swing AWT, Swing, JavaFX & SWT 3
T Event Handling JLabel als eigener Button AWT, Swing, JavaFX & SWT 7
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
S Eigener Syntax Highlighter - Problem AWT, Swing, JavaFX & SWT 5
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
N 2D-Grafik RTF in eigener JComponent AWT, Swing, JavaFX & SWT 2
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
frankred Swing Eigener ListCellRenderer D'n'D "MOVE" - Mauszeiger flackert AWT, Swing, JavaFX & SWT 14
N jComboBox und eigener Datentyp AWT, Swing, JavaFX & SWT 8
Q Eigener Colorchooser AWT, Swing, JavaFX & SWT 2
V LayoutManager Eigener LayoutManager funktioniert nicht. AWT, Swing, JavaFX & SWT 5
C Swing eigener InputDialog AWT, Swing, JavaFX & SWT 6
L Swing Falscher Wert nach eigener Sortierung (JTable) AWT, Swing, JavaFX & SWT 2
R JTable - eigener Editor - Mouse events AWT, Swing, JavaFX & SWT 2
S Mit eigener Klasse auf GUI-Elemente zugreifen AWT, Swing, JavaFX & SWT 3
J Swing JTable, eigener TableCellRenderer Keine Anzeige in den Zellen AWT, Swing, JavaFX & SWT 8
N Eigener Grafik Editor mit fehlerhafter Anzeige AWT, Swing, JavaFX & SWT 4
O Eigener Button AWT, Swing, JavaFX & SWT 8
data89 Eigener Button variiert in der Größe - Hilfee! AWT, Swing, JavaFX & SWT 5
A Nimbus eigener Painter funzt nicht AWT, Swing, JavaFX & SWT 11
O AWT Zeichne mit eigener Farbe AWT, Swing, JavaFX & SWT 3
A Aufrufen eigener Klasse AWT, Swing, JavaFX & SWT 8
J eigener Layoutmanager? AWT, Swing, JavaFX & SWT 6
M Eigenes ActionEvent / Eigener Listener AWT, Swing, JavaFX & SWT 2
G SWT DatePicker funzt nicht in eigener Anwendung AWT, Swing, JavaFX & SWT 5
J Problem mit eigener Titelleiste und MouseMotionListener AWT, Swing, JavaFX & SWT 2
F Eigener Observer? AWT, Swing, JavaFX & SWT 4
H eigener Editor und JList als PopMenu AWT, Swing, JavaFX & SWT 6
M Brauche Hilfe zum Einbinden von eigener Schrfitart AWT, Swing, JavaFX & SWT 3
m@nu Problem mit eigener TableCellEditor-Impelemtierung AWT, Swing, JavaFX & SWT 5
clemson Edtor mit anzeigen eigener Tags AWT, Swing, JavaFX & SWT 8
V SWT eigener Renderer? + wo gibts die Sourcen für SWT 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
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
melaniemueller Confirmation Dialog erstellen AWT, Swing, JavaFX & SWT 18
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
E Swing Dialog modal aufrufen AWT, Swing, JavaFX & SWT 2
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
J JavaFX Dialog - Style AWT, Swing, JavaFX & SWT 6
D Swing Dynamisches Dialog UI AWT, Swing, JavaFX & SWT 8
H JFileChooser Dateinamen vorgeben (Save Dialog) AWT, Swing, JavaFX & SWT 9
D Neues Dialog Mittig auf dem Bildschirm AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
G Datei öffnen Dialog modifizieren AWT, Swing, JavaFX & SWT 13
W SWT Dialog richtig schließen? AWT, Swing, JavaFX & SWT 0
M Benutzer-Dialog ohne System.in/out AWT, Swing, JavaFX & SWT 2
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
F Dialog mit Titel, Text und Ok Button AWT, Swing, JavaFX & SWT 2
TheWhiteShadow SWT Dialog Titel setzen AWT, Swing, JavaFX & SWT 6
VfL_Freak Darstellungsproblem mit Dialog AWT, Swing, JavaFX & SWT 8
P Swing Dialog zeigt keinen Inhalt in Verbindung mit JFrame AWT, Swing, JavaFX & SWT 18
G Nebenläufiger Prozess mit Dialog AWT, Swing, JavaFX & SWT 2
C Swing Fortschrittsanzeige im Dialog ohne Fortschrittsbalken und Abbruchoption AWT, Swing, JavaFX & SWT 7
M Swing Elemente im Dialog neu "laden". AWT, Swing, JavaFX & SWT 6
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
R DnD in modalem Dialog AWT, Swing, JavaFX & SWT 4
I Dialog zum Speichern? AWT, Swing, JavaFX & SWT 16
M Dialog soll etwas an "Oberklasse" übergeben AWT, Swing, JavaFX & SWT 3
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
hdi Swing Bzgl JFrame & modaler Dialog AWT, Swing, JavaFX & SWT 6
N Modaler Dialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 8
J SWT Dialog in Dialog automatisch öffnen AWT, Swing, JavaFX & SWT 19
H Confirm Dialog erweitern AWT, Swing, JavaFX & SWT 5
K Modaler Dialog aber trotzdem Aktualisierung des MainFrames AWT, Swing, JavaFX & SWT 6
B Gestaltung eines Optionen-Dialog AWT, Swing, JavaFX & SWT 16
P Swing Option zeitbeschränkt in modalem Dialog anbieten AWT, Swing, JavaFX & SWT 2
X Einem JFrame einen Dialog als Parent setzen. Möglich? AWT, Swing, JavaFX & SWT 4
L AWT Window, Dialog und verschiedene Betriebssysteme AWT, Swing, JavaFX & SWT 2
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10
A Swing Delay (1-4 Sek.) bei JTable und Dialog beim ersten Ausführen AWT, Swing, JavaFX & SWT 3
P Swing modaler dialog AWT, Swing, JavaFX & SWT 3
P SWT Dialog AWT, Swing, JavaFX & SWT 3
O Login Dialog zweimal öffnen AWT, Swing, JavaFX & SWT 2
B Datei öffnen Dialog AWT, Swing, JavaFX & SWT 9
N Swing eigenen Dialog erstellen AWT, Swing, JavaFX & SWT 8
C Swing Fehlermeldung in einem Dialog anzeigen AWT, Swing, JavaFX & SWT 2
L Dialog mit Dauerschleifen AWT, Swing, JavaFX & SWT 4
K SWT TableViewer refresh() im Dialog AWT, Swing, JavaFX & SWT 2
Semox Swing FileSaveAs Dialog Problem AWT, Swing, JavaFX & SWT 14
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
B Dialog aus DB Struktur erstellen AWT, Swing, JavaFX & SWT 4
D URL Dialog AWT, Swing, JavaFX & SWT 2
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
J nicht weckklickbarer dialog AWT, Swing, JavaFX & SWT 15
S Frame - Panel - Dialog rückgabe wert AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben