当前位置: 首页 > 面试题库 >

我如何查找秋千是否打开了窗户

芮学
2023-03-14
问题内容

我的应用程序存在问题,用户一次将打开多个窗口。而且我添加了dispose()方法来调用关闭窗口。现在,我应该一直保持至少打开一个窗口,以便html" target="_blank">应用程序不会在没有完全关闭的情况下隐藏。如果您不明白,请阅读以下情形:

我同时打开了窗口A和窗口B。现在我可以关闭窗口A或窗口B,但不能同时关闭两者。换句话说,仅当窗口A打开时,才应允许窗口B关闭,反之亦然。我如何做到这一点?


问题答案:

一个简单的窗口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;
    }


 类似资料:
  • 问题内容: 我下面的代码创建一个新数组,并将其发送到chat(jFrame)。 但是我需要修改此代码以使其工作,如果打开了聊天jframe,则不要打开新的jFrame。而是在chat jframe中打开新的选项卡。聊天框的代码是: 问题答案: 我想知道如果该窗口依赖于另一个窗口,那么是否不应该使用JDialogs而不是JFrames。 一种解决方案是使用类字段来保存对窗口(JFrame或JDial

  • 问题内容: 有没有一种简单的方法来检测XMLHttpRequest在浏览器窗口中是否处于活动状态?还是有多少活跃?即。有没有一种方法可以检测我的浏览器窗口中是否有活动的AJAX调用? 问题的扩展: 使用javascript有没有办法查看是否打开了XMLHttpRequests?例如“ window.XMLisActive()”或类似的东西? 解决方案:最终为XMLHttpRequest写一个包装器

  • 问题内容: 如果我在关闭的管道中写一条消息,则程序崩溃 在写之前如何检查它是否仍然打开? 问题答案: 正确的方法是测试的返回码,然后还要检查: 但是请稍等:写入封闭的管道不仅会返回-1 ,而且还会发送一个终止进程的信号: EPIPE fd连接到读数端关闭的管道或插座。发生这种情况时,写入过程还将收到SIGPIPE信号。 因此,在进行测试之前,您还需要 忽略:

  • 问题内容: 我有一个很大的swing应用程序,我想让它记住所有窗口,jframe等的大小。因此,如果用户按自己的喜好调整窗口大小,则下次窗口看起来完全一样。 我是否有更好的解决方案,但是可以在“首选项”中手动编写每个窗口的位置/大小?有什么方便的方法可以在JTable中存储列的顺序吗?可能是一些框架?只是不想写样板。 不幸的是,整个大型应用程序的序列化不是一种选择。 问题答案: 不,没有。不要忘了

  • 问题内容: 我最喜欢的Linux工具之一是lsof-真正的瑞士军刀! 今天,我发现自己想知道WinXP系统上的哪些程序打开了特定文件。有与lsof等效的工具吗?此外,有问题的文件是通过网络共享进行的,因此我不确定是否会使问题复杂化。 问题答案: 使用Sysinternals Suite中的Process Explorer,Find Handle或DLL函数将让您搜索打开该文件的过程。

  • 问题内容: 我正在使用这个小脚本来查找Firebug是否打开: 而且效果很好。现在,我正在搜索半小时,以找到一种方法来检测Google Chrome的内置Web开发人员控制台是否已打开,但找不到任何提示。 这个: 不起作用。 编辑: 因此,似乎无法检测到Chrome控制台是否处于打开状态。但是有一个“hack”有效,但有一些缺点: 控制台断开连接后将无法工作 在页面加载中打开控制台时将不起作用 因