Java Swing How to - Attach a window to another window








Question

We would like to know how to attach a window to another window.

Answer

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
//from w  ww.ja v a2  s  . c  om
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame implements ComponentListener, ActionListener {
  JButton ok = new JButton("OK");
  Dialog dialog = new Dialog();

  public Main() {
    ok.addActionListener(this);
    JPanel panel = new JPanel();
    panel.add(ok);

    getContentPane().add(panel, "South");
    addComponentListener(this);
    setVisible(true);
    setSize(new Dimension(200, 200));
    validate();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public static void main(String[] args) {
    new Main();
  }

  public void actionPerformed(ActionEvent ae) {
    dialog.setVisible(true);
  }

  @Override
  public void componentHidden(ComponentEvent arg0) {
  }

  @Override
  public void componentMoved(ComponentEvent arg0) {
    int x = this.getX() + this.getWidth();
    int y = this.getY();

    dialog.setDialogLocation(x, y);
  }

  @Override
  public void componentResized(ComponentEvent arg0) {
  }

  @Override
  public void componentShown(ComponentEvent arg0) {
  }
}

class Dialog extends JDialog {
  JButton done = new JButton("Done");
  public Dialog() {
    this.add(done);
    this.setSize(new Dimension(400, 200));
  }

  public void setDialogLocation(int x, int y) {
    this.setLocation(x, y);
  }
}