tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1322
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Solidus0815 Solidus0815 ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    2
    Hi,
    ich möchte mir eine eigene Klasse für einen JDialog erstellen den ich extern
    benutzten kann.

    Wie kann ich beim Klick auf den Ok Button die eingegebenen Werte an die
    aufgerufene Klasse zurückgeben

    Wenn ich den Dialog in der Klasse erstellen in der ich ihn benutze ist
    das alles kein Problem.

    Ich würds gern als eigenständige Klasse machen den ich in jeden Prog benutzen kann.
    Ähnlich dem JOptionPane nur das ich ihn freier gestallten kann.

    Vielen Dank für die Hilfe
    Solidus
     

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Reicht dir denn der InputDialog von JOptionPane nicht aus? Du kannst da ein Icon angeben, den Titel und die Nachricht setzen und bekommst auch den eingegebenen Text zurück. Mehr will man doch von so einem InputDialog nicht, eigentlich bräuchte man nicht einmal das Icon.

    Naja, sowas zu basteln ist aber auch nicht sonderlich schwer. Der Trick dabei ist, dass der Dialog modal sein muss, damit das Programm an der Stelle hängen bleibt und sobald der Dialog zerstört wird, läuft das Programm weiter.

    Hab da mal ein einfaches Beispiel zur Veranschaulichung gebastelt:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    package de.tutorials.forum.help.solidus0815.dialogs;
     
    import java.awt.Dialog.ModalityType;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.GridLayout;
    import java.awt.Window;
     
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    public class MyDialogs {
        public static String showInputDialog(Window owner, String message, String title) {
            final JDialog dialog = new JDialog(owner, title, ModalityType.APPLICATION_MODAL);
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
     
            JLabel messageLabel = new JLabel(message);
            JTextField inputTextField = new JTextField();
            JButton okButton = new JButton("OK");
            okButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    dialog.dispose();
                }
            });
     
            dialog.setLayout(new GridLayout(3, 1));
            dialog.add(messageLabel);
            dialog.add(inputTextField);
            dialog.add(okButton);
     
            dialog.setSize(350, 100);
            dialog.setLocationRelativeTo(null);
            dialog.setVisible(true);
     
            return inputTextField.getText();
        }
    }
    Wie du siehst, kannst du den Dialog gestalten, wie du lustig bist und genauso auch machen, was du willst.

    Testen kannst du das dann z.B. so:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    
    package de.tutorials.forum.help.solidus0815.dialogs;
     
    public class DialogsTest {
        public static void main(String[] args) {
            //      JOptionPane.showInputDialog("rofl");
            System.out.println(MyDialogs.showInputDialog(null, "Test und so", "Test"));
        }
    }
    Da siehst du auch, dass es erst weiter geht, wenn man den Dialog zerstört hat. Das passiert z.B. beim Klick auf den OK-Button. Leider auch beim Klick auf den Schließen-Button des Dialogs, das müsste dann abgefangen werden. Aber wie gesagt, dient ja eigentlich auch nur der Vernaschaulichung und mehr nicht.
    Geändert von Akeshihiro (10.12.11 um 09:55 Uhr)
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  3. #3
    Solidus0815 Solidus0815 ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    2
    Ok vielene dank,

    damit wär das Rätsel gelöst, dann war es wohl komplett unnötig die eingaben erst bei
    actionPerformed abzufragen.

    Der Grund warum ich einen eigenen erstellen will ist das ich bei JOptionPane im Design
    sehr eingeschränkt bin, wenn ich mehrere Eingabefelder einbauen will.

    Außerdem lassen sich da die Buttons nicht ändern.

    Und eigenen bauen ist mit dem jetzigen Hinweis auch nich mehr schwer

    mfg
    Solidus
     

  4. #4
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Kann es sein, dass das auf eine Art Formular hinaus läuft?

    Wie gesagt, der Trick dabei ist einfach, dass der Dialog einfach modal geschaltet sein muss, dann ist das auch kein Problem, man kann sich dann also austoben, wie man Lust hat. Ansonsten kann man sich auch die Klasse JOptionPane anschauen, die Sources sind ja frei verfügbar. Ist sicherlich auch sehr lehrreich.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 04.01.11, 22:36
  2. JDialog mit ESC schliessen
    Von Dox im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 10
    Letzter Beitrag: 27.09.08, 22:17
  3. JDialog schließen
    Von xxTejaxx im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 16
    Letzter Beitrag: 01.04.08, 10:32
  4. [SWT-Snippet] InputDialog mit dynamischer Anzahl von Feldern
    Von SNOWMAN-X im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 02.02.08, 21:59
  5. JDialog in DinA4 Format erstellen
    Von Patriot2k im Forum Java
    Antworten: 0
    Letzter Beitrag: 02.04.07, 15:09

Stichworte