下面是一个示例代码,用于避免打开多个相同类型的窗口。这个示例是使用Java Swing编写的。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
public class Main {
private static List frames = new ArrayList<>();
public static void main(String[] args) {
JButton openButton = new JButton("打开窗口");
openButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openNewWindow();
}
});
JFrame frame = new JFrame("主窗口");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));
frame.add(openButton);
frame.setVisible(true);
}
private static void openNewWindow() {
// 检查是否已经打开了相同类型的窗口
for (JFrame existingFrame : frames) {
if (existingFrame.getClass().equals(JFrame.class)) {
existingFrame.requestFocus();
return;
}
}
JFrame newFrame = new JFrame("新窗口");
newFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
newFrame.setSize(300, 200);
newFrame.setVisible(true);
frames.add(newFrame);
}
}
在这个例子中,我们使用一个List
来保存已经打开的窗口。openNewWindow()
方法被调用时,会遍历这个列表,检查是否已经打开了相同类型的窗口。如果找到了相同类型的窗口,就将焦点设置在已经打开的窗口上,否则打开一个新的窗口并将其添加到列表中。
这样,当用户点击“打开窗口”按钮时,如果已经存在一个相同类型的窗口,则焦点会切换到已经打开的窗口,而不会打开一个新的窗口。这样可以避免打开多个相同类型的窗口。