GUI JOptionPane - Parameter im Konstruktor festlegen?

membersound

Bekanntes Mitglied
Hallo,

wie lege ich die Parameter für ein jOptionPane im Konstruktor fest?

Ich habe mit testweise ein Fenster mit Button erstellt, bei dessen Click der OptionPane-Dialog aufgerufen wird. Nur sehe ich nichts von meinen vordefinierten Parametern...

Java:
private void initComponents() {

DeleteDialog = new javax.swing.JOptionPane();

DeleteDialog.setMessage("Do you really want to delete this?");
DeleteDialog.setOptionType(JOptionPane.YES_NO_OPTION);

}

private void buttonDeleteActionPerformed(java.awt.event.ActionEvent evt) {  
DeleteDialog.showConfirmDialog(this, ""); //<-- hier schlägt mir der Compiler auch "JOptionPane.showConfirmDialog(...)" vor. Warum??

}

Mir ist klar, wie ich mit showConfirmDialog einen entsprechenden Dialog erstelle. Aber ich möchte es eben vordefinieren. Wie bekomme ich den Dialog dann mit den vordefinierten Sachen angezeigt?

Danke
 
1.) Konventionen: Variablen schreibt man lowerCamelCase => DeleteDialog wird zu deleteDialog
2.) Der Compiler schlägt dir JOptionPane.[...] vor, weil showConfirmDialog eine statische Methode ist und diese normalerweise nicht über Instanzen aufgerufen werden (sollen).
3.) Dir wird nichts angezeigt, weil eine (wie bereits erwähnt) statische Methode keine Zugriffe auf nicht-statische Variablen hat, die in einem Objekt gesetzt wurden. Deswegen beachtet dein Dialog auch nicht deine definierten Parameter

JOptionPane bietet verschiedene statische Methoden, um den Dialog an seine Bedürfnisse anzupassen. Ich würde einfach eine davon wählen.
 
Danke schonmal.

Dh ihr würde mir verschlagen Instanz deleteDialog wegzulassen, und statt dessen in der ActionPerformed Methode direkt "JOptionPane.showConfirmDialog(...)" zu verwenden?

Macht in diesem Fall sicher Sinn.

Aber ich versuche gerade auch die Gui-Erstellung mit dem Netbeans Editor hinzubekommen. Mir geht es dabei auch nicht speziell um den OptionsDialog, sondern um die Funktionsweise allgemein.

Wenn ich mir dort also ein jOptionsDialog erstelle, in dessen Properties noch eine Message und andere Parameter einstelle, dann gibt die IDE mir ja genau diesen Code heraus:

Java:
        deleteDialog.setMessage("Do you really want to delete this?");
        deleteDialog.setOptionType(JOptionPane.YES_NO_OPTION);

Und das, was mir da dann erstellt wurde, möchte ich natürlich auch nutzen. Also muss ich doch irgendwie den deleteDialog beim Buttonclick mit diesen vorgegebenen Parametern sichtbar machen können. Sonst würde es doch gar keinen Sinn ergeben, dass man diese Parameter überhaupt im Guibuilder setzen kann?
 
JOptionPane (Java Platform SE 6) Ein Blick in die Api hilft oft viel mehr als man glaubt:
API hat gesagt.:
Java:
JOptionPane pane = new JOptionPane(arguments);
     pane.set.Xxxx(...); // Configure
     JDialog dialog = pane.createDialog(parentComponent, title);
     dialog.show();
     Object selectedValue = pane.getValue();
     if(selectedValue == null)
       return CLOSED_OPTION;
     //If there is not an array of option buttons:
     if(options == null) {
       if(selectedValue instanceof Integer)
          return ((Integer)selectedValue).intValue();
       return CLOSED_OPTION;
     }
     //If there is an array of option buttons:
     for(int counter = 0, maxCounter = options.length;
        counter < maxCounter; counter++) {
        if(options[counter].equals(selectedValue))
        return counter;
     }
     return CLOSED_OPTION;

Und generell: Du entwickelst dein Programm und nicht dein GUI-Builder. Dieser sollte nur eine Hilfe sein.
 

Neue Themen


Zurück
Oben