Swing JFC Java

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class DataExchangeTest extends JFrame implements ActionListener {
  private ConnectDialog dialog = null;
  private JMenuItem connectItem = new JMenuItem("Connect");
  public DataExchangeTest() {
    setTitle("Data Exchange");
    setSize(300, 300);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    JMenuBar mbar = new JMenuBar();
    setJMenuBar(mbar);
    JMenu fileMenu = new JMenu("File");
    mbar.add(fileMenu);
    
    connectItem.addActionListener(this);
    fileMenu.add(connectItem);
    
  }
  public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource();
    if (source == connectItem) {
      UserInfo transfer = new UserInfo("yourname", "pw");
      dialog = new ConnectDialog(this);
      if (dialog.showDialog(transfer)) {
        String name = transfer.username;
        String pwd = transfer.password;
        Container contentPane = getContentPane();
        contentPane.removeAll();
        contentPane.add(new JLabel("username=" + name + ", password="  + pwd), "Center");
        validate();
      }
    } 
  }
  public static void main(String[] args) {
    JFrame f = new DataExchangeTest();
    f.show();
  }
}
class UserInfo {
  public String username;
  public String password;
  public UserInfo(String u, String p) {
    username = u;
    password = p;
  }
}
class ConnectDialog extends JDialog implements ActionListener {
  private JTextField username = new JTextField("");
  private JPasswordField password= new JPasswordField("");
  private boolean okPressed;
  private JButton okButton;
  private JButton cancelButton;
  public ConnectDialog(JFrame parent) {
    super(parent, "Connect", true);
    Container contentPane = getContentPane();
    JPanel p1 = new JPanel(new GridLayout(2, 2,3,3));
    p1.add(new JLabel("User name:"));
    p1.add(username);
    p1.add(new JLabel("Password:"));
    p1.add(password );
    contentPane.add("Center", p1);
    Panel p2 = new Panel();
    okButton = addButton(p2, "Ok");
    cancelButton = addButton(p2, "Cancel");
    contentPane.add("South", p2);
    setSize(240, 120);
  }
  private JButton addButton(Container c, String name) {
    JButton button = new JButton(name);
    button.addActionListener(this);
    c.add(button);
    return button;
  }
  public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource();
    if (source == okButton) {
      okPressed = true;
      setVisible(false);
    } else if (source == cancelButton)
      setVisible(false);
  }
  public boolean showDialog(UserInfo transfer) {
    username.setText(transfer.username);
    password.setText(transfer.password);
    okPressed = false;
    show();
    if (okPressed) {
      transfer.username = username.getText();
      transfer.password = new String(password.getPassword());
    }
    return okPressed;
  }
}