Datenzugriff auf JDialog!

Status
Nicht offen für weitere Antworten.

sunnyfriday

Aktives Mitglied
hallo Leute,

Ich habe ein Frage zu einem Konzept.
Ich habe ein JFrame. Aus dem Frame herraus rufe ich eine JDialog Klasse auf.
In der JDialog Klasse generiere ich Daten, und habe zwei Buttons "OK" und "Cancel".

Um die generierten Daten aus dem JDialg zu lesen, mache ich es bisher wie folgt.

1. Aus dem JFrame herraus, melde ich 2 Listener bei den Buttons "OK" und "Cancel" an.
2. Wenn ich im JDialog Daten generiere, und auf den Button "OK" drücke, dann reagiert mein Listener im JFrame und ruft eine öffentliche Methode getData() des JDialog auf um die Daten zu lesen.

Frage: Ist das der generelle Weg um auf Daten eines JDialogs zuzugeifen?

Ich habe da noch eine Möglichkeit:
Ich übergebe dem JDialog eine Referenz vom JFrame. Im JDialog mache ich das mit den Listener, und wenn ich auf "OK" drücke, dann rufe ich eine öffentliche Methode des Jframes auf um die Datn zurückzugeben.

Welcher Weg ist vom Softwaredesign her der richtige Weg???

gruss
 

SebiB90

Top Contributor
Also welcher der richtige Weg ist ka, wirds wahrscheinlich auch so nicht geben.
Ich persönlich würde es so lösen, wie man es auch vom JFileChooser kennt. Den Dialog auf Modal setzen, je nach dem welcher Button gedrückt wird ein Flag setzen, diesen nach schließen des Dialogs abfragen (code wird ja erst nicht weiter ausgeführt, da Dialog modal), und dann dementsprechend reagieren.
 

diggaa1984

Top Contributor
welcher natur sind denn die daten, wie komplex ist denn der dialog, wenns nur nen simpler string ist, brauchst nich son aufstand zu machen:
[HIGHLIGHT="Java"]entnommen aus java-API "How to make Dialogs"

Object[] possibilities = {"ham", "spam", "yam"};
String s = (String)JOptionPane.showInputDialog(
frame,
"Complete the sentence:\n"
+ "\"Green eggs and...\"",
"Customized Dialog",
JOptionPane.PLAIN_MESSAGE,
icon,
possibilities,
"ham");

//If a string was returned, say so.
if ((s != null) && (s.length() > 0)) {
setLabel("Green eggs and... " + s + "!");
return;
}

//If you're here, the return value was null/empty.
setLabel("Come on, finish the sentence!");[/HIGHLIGHT]
 

sunnyfriday

Aktives Mitglied
hallo,

danke für die antworten.
@diggaa1984
Die Daten sind schon komplexer ( combobox, textfield, etc ...).

gruss
 

sunnyfriday

Aktives Mitglied
hallo,

doch nochmal ne frage dazu.

Wie setze ich ein JDialog auf modal???
Ich habe ein JFrame und mein JDialog Klasse heisst ConfigDialog und ist abgeleitet von JDialog.

Wenn ich den JDialog auf modal setze, wie stelle ich sicher, dass ich das den JDialg wieder verlassen kann. Wird mir da zusätzlich ein Button "OK" plaziert, oder muss ich mich selber darum kümmern wieder zurückzukehren.

Ich habe den Konstruktor JDialog(Frame owner, boolean modal) entdeckt. Meine Klasse ConfigDialog implementiert dies jedoch nicht. muss ich dann in meinem ConfigDialog Konstruktor den Konstruktor von JDialog erst aufrufen mit diesen Parametern?? Also muss ic das Frame einfach weiterreichen an den JDialog!?

ps: hab leider grad nicht die möglichkeit es programmtechnisch auszuprobieren.

gruss sunny
 

L-ectron-X

Gesperrter Benutzer
Genau.

Im Konstruktor deines Dialoges:
[HIGHLIGHT="Java"]public ConfigDialog(DeinJFrame frame, String title, boolean modal) {
super(frame, titel, modal);
}[/HIGHLIGHT]

Der Aufruf in deinem JFrame:
[HIGHLIGHT="Java"]ConfigDialog cd = new ConfigDialog(this, "Ein Titel", true);
cd.setVisible(true);[/HIGHLIGHT]
 

sunnyfriday

Aktives Mitglied
hallo,

danke für die schnelle Antwort.
Wenn ich im Dialog meine Daten generiert habe, wie verlasse ich das JDialg wieder???
muss ich da einen Button "OK" anlegen, einen Listener anmelden, und dann darauf reagieren?? Wie schließe ich den Dialg wieder??

2. Frage: Wird eigentlich von einem JDialog immer dann eine Instaz angelegt, wenn man es braucht?? Oder sollte man es einmal anlegen, und dann mit cd.setVisible(true) und cd.setVisible(false) arbeiten??

gruss sunny
 

SebiB90

Top Contributor
also du rufst den Dialog so auf
Code:
ConfigDialog cd = new ConfigDialog(this, "Ein Titel", true);
cd.setVisible(true); // blockiert bis Dialog unsichtbar ist
if(cd.getFlag() == ConfigDialog.OK_BUTTON) {
 //daten verarbeiten
}

und die dialog klasse sieht ungefähr so aus:
Code:
public class ConfigDialog extends Dialog {
  public static final int OK_BUTTON = 1;
  public static final int CANCEL_BUTTON = 2;

  private int flag = CANCEL_BUTTON;

  //...

  public int getFlag() {
    return flag;
  }

  private void createGUI() {
     //...
     okButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         flag = OK_BUTTON;
         setVisible(false);
       }
     });
     //...
     cancelButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         flag = CANCEL_BUTTON;
         setVisible(false);
       }
     });
  }
}
Code ungetest, aber so ungefähr sollte es gehen
 

sunnyfriday

Aktives Mitglied
hallo,

danke... genau das wollte ich wissen. super ...

danke für eure hilfe.. ihr seid klasse ...

gruss sunny
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Frage zu Datenzugriff bei new Thread(new Runnable) Java Basics - Anfänger-Themen 8
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
A JDialog öffnet sich nicht Java Basics - Anfänger-Themen 7
D JDialog schließen Java Basics - Anfänger-Themen 11
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
H JDialog Problem Java Basics - Anfänger-Themen 10
H Problem JDialog.setVisible Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
I JDialog Problem Java Basics - Anfänger-Themen 37
J Icon JDialog mit Java 1.4 Java Basics - Anfänger-Themen 2
M JDialog Modality Java Basics - Anfänger-Themen 7
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
S JDialog und SwingUtilities Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
M JDialog soll was an die AufruferKlasse zurück geben Java Basics - Anfänger-Themen 3
S Layout JDialog Java Basics - Anfänger-Themen 9
S eigene Methoden in JDialog Java Basics - Anfänger-Themen 13
pun Im JDialog auf Objekt im Parent JFrame zugreifen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
A JDialog, Owner JFrame ZIEL: nciht in der taskbar Java Basics - Anfänger-Themen 9
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
B Grafiken/Bilder mit Netbeans in Jdialog Java Basics - Anfänger-Themen 7
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
A Klasse erbot von JDialog. Kontruktor? Java Basics - Anfänger-Themen 4
M Hauptfenster nicht wählbar bei offenem JDialog Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
B Fenstergröße variiert bei JDialog.pack()-Aufruf Java Basics - Anfänger-Themen 10
S JDialog während automatischer Dateisuche einblenden Java Basics - Anfänger-Themen 6
J JDialog zeigt nichts an Java Basics - Anfänger-Themen 4
C JDialog Werte nach Frame übergeben Java Basics - Anfänger-Themen 10
G JDialog + setOpaque Java Basics - Anfänger-Themen 5
G JDialog auf Jpanel statt Frame? Java Basics - Anfänger-Themen 4
N Werte von JDialog entgegennehmen Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
T Register im JDialog Java Basics - Anfänger-Themen 9
G JDialog übers X schliessen und Programm beenden Java Basics - Anfänger-Themen 4
C Fehlermeldungen umleiten auf JDialog Java Basics - Anfänger-Themen 2
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
M Button in einem JDialog mit Enter ausführen Java Basics - Anfänger-Themen 2
C FocusLost reagiert nicht bei JDialog Java Basics - Anfänger-Themen 5
E Von einem JDialog einen neuen JDialog aufrufen Java Basics - Anfänger-Themen 10
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
G JDialog Java Basics - Anfänger-Themen 15
M JDialog Java Basics - Anfänger-Themen 3
M JDialog basierend auf JDialog aufrufen Java Basics - Anfänger-Themen 4
B KeyListener beim JDialog Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
S JDialog Frage Java Basics - Anfänger-Themen 2
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
P JDialog funktioniert nicht? Java Basics - Anfänger-Themen 9
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
F JDialog per Button-Klick schliessen Java Basics - Anfänger-Themen 2
S JDialog einrichten Java Basics - Anfänger-Themen 4
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
J Default Button bei jDialog Java Basics - Anfänger-Themen 2
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
K JDialog aus einer anderen klasse einfügen Java Basics - Anfänger-Themen 2
S Auf JDialog aus anderer Datei zugreifen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben