views:

3598

answers:

3

I have a jframe (parent) which creates an input frame (child) where I get some parameter.

In the "child" frame I have "ok" and "cancel" buttons.

When "ok" button is pressed, the parent frame needs to be updated with new data.

What is the best way to do that??

+1  A: 

Pass in a reference to the parent frame when you create (or display) the child frame. This will require an overloaded constructor or display method.

Once the child has the reference, it can of course call any method that the parent exposes as public, like UpdateDate()

colithium
this I the solution I'm using, there is no cleanest way?
Giancarlo
A: 

You could have the JFrame implement ActionListener and add it to the button using addActionListener.

Tom Martin
+1  A: 

As of 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);

    .....

  }

}
corlettk