Pregunta

Tengo un JFrame (padre) que crea una trama de entrada (niño) donde consigo algún parámetro.

En el marco de "niño" Tengo botones "OK" y "cancelar".

Cuando se pulsa el botón "OK", el marco principal tiene que ser actualizado con nuevos datos.

¿Cuál es la mejor manera de hacer eso ??

¿Fue útil?

Solución

pasa una referencia al marco de los padres cuando se crea (o pantalla) del marco secundario. Esto requerirá un método constructor o pantalla sobrecargado.

Una vez que el niño tiene la referencia, se puede, por supuesto, llamar a cualquier método que expone el padre como público, como UpdateDate ()

Otros consejos

A partir de 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);

    .....

  }

}

Usted podría tener el JFrame implementar ActionListener y agregarlo al botón utilizando addActionListener.

Me gusta poner un 'lanzamiento ()' método en todos mis cuadros / cuadros de diálogo. Con la modalidad de la derecha se puede devolver un resultado.

Ejemplo de valor de retorno de diálogo:

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;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top