一个简单的窗口Manger并不是很棘手,您需要的只是
- WindowListener跟踪正在监听的Windows
- 创建窗口并注册侦听器的已定义位置
- 使Windows在关闭时不执行任何操作,并让侦听器负责是否要关闭的决定(除最后一个以外的所有操作都将这样做)
一些片段:
// the listener (aka: WindowManager) WindowListener l = new WindowAdapter() { List<Window> windows = new ArrayList<Window>(); @Override public void windowOpened(WindowEvent e) { windows.add(e.getWindow()); } @Override public void windowClosing(WindowEvent e) { if (windows.size() > 1) { windows.remove(e.getWindow()); e.getWindow().dispose(); } } }; // create the first frame Jframe frame = createframe(l); frame.setVisible(true);// a method to create a new window, config and add the listener int counter = 0; private Jframe createframe(final WindowListener l) { Action action = new AbstractAction("open new frame: " + counter) { @Override public void actionPerformed(ActionEvent e) { Jframe frame = createframe(l); frame.setVisible(true); } }; Jframe frame = new Jframe("someframe " + counter++); frame.setDefaultCloseOperation(Jframe.DO_NOTHING_ON_CLOSE); frame.add(new JButton(action)); frame.addWindowListener(l); frame.pack(); frame.setLocation(counter * 20, counter * 10); return frame; }


