Domanda

Ho un JFrame (padre) che crea una cornice di ingresso (bambino) dove ho alcuni parametri.

Nella cornice "bambino" ho "OK" e "Annulla" pulsanti.

Quando si preme il tasto "ok", il frame genitore deve essere aggiornato con i nuovi dati.

Qual è il modo migliore per farlo ??

È stato utile?

Soluzione

Passare un riferimento al frame genitore quando si crea (o display) frame secondario. Ciò richiederà un metodo di costruzione o di visualizzazione sovraccarico.

Una volta che il bambino ha il riferimento, può naturalmente chiamare qualsiasi metodo che il genitore espone come pubblico, come UpdateDate ()

Altri suggerimenti

A partire da Java 1.3

public class MyPanel extends JPanel
{

  public MyPanel() {

    ....

    JButton cancelButton = new JButton("Cancel");
    cancelButton.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          // <<<< HERE'S THE INTERESTING BIT >>>>
          javax.swing.SwingUtilities.getWindowAncestor(MyPanel.this).dispose();
        }
      }
    );
    add(cancelButton);

    .....

  }

}

Si potrebbe avere il JFrame implementare ActionListener e inserirlo al pulsante utilizzando addActionListener.

mi piace mettere un 'lancio ()' metodo su tutti i miei fotogrammi / finestre di dialogo. Con la modalità giusta può restituire un risultato.

Esempio di valore di ritorno dalla finestra:

private static class MyDialog extends JDialog {
    String result;
    private JButton btnOk = new JButton("OK");

    public MyDialog() {
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setModalityType(ModalityType.APPLICATION_MODAL);

        add(btnOk);
        btnOk.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                result = "Ok";
                setVisible(false);
            }
        });
    }

    public String launch() {
        result = "Cancel";
        pack();
        setVisible(true);
        return result;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top