Dee*_*pak 9 java windows swing action windowlistener
我的应用程序有问题,用户一次打开多个窗口.我已经添加了dispose()方法来关闭窗口.现在我应该始终保持至少一个窗口打开,以便应用程序不会在未完全关闭的情况下隐藏.如果您不理解,请阅读以下方案:
我有窗口A和窗口B同时打开.现在我可以关闭窗口A或窗口B,但不能同时关闭两者.换句话说,只有在窗口A打开时才允许窗口B关闭,反之亦然.我怎么做这个?
kle*_*tra 16
一个简单的windowManger并不是很棘手,你需要的只是
一些片段:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9249 次 |
最近记录: |