访问引用而不知道引用名称

时间:2014-12-02 10:33:35

标签: java swing jframe windowlistener

我有一个名为NetPosition的类,它有一个JFrame,而JFrame包含一个按钮,如果点击它会使另一个类的对象名为BuyScreen并打开另一个JFrame.THe问题是当父框架关闭时我想要所有的BuyScreen框架被关闭。这样的事情

frame.addWindowListener(new WindowListener() {

    @Override
    public void windowOpened(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowIconified(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override

    /*Closing all the buy screens and sells screens of marketwatch before market watch screen is closed*/
    public void windowClosing(WindowEvent e) {
        // TODO Auto-generated method stub
        if(BuySellNetPosition.countBuySellNetPosition!=0)
        {
            BuySellNetPosition.frame
        }

    }

    @Override
    public void windowClosed(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowActivated(WindowEvent e) {
        // TODO Auto-generated method stub

    }
});

子框架不是静态的。我可以同时打开几个BuyScreen框架。是否可以在不知道该类的引用名称的情况下关闭特定类的所有框架。 以前我制作了一系列BuyScreen对象来处理这个问题。但我想知道是否还有其他方法。

2 个答案:

答案 0 :(得分:1)

每当您创建新的BuyScreen时,您应该将其作为侦听器添加到您想要响应的主框架中。这样,无论何时主框架关闭,它都会通知您要关闭的所有BuyScreen帧。

您不需要自己维护一组框架。 addWindowListener()电话会为您做到这一点。

windowClosing()中的BuyScreen实施只需检查它是该事件来源的主窗口,然后自行关闭。

答案 1 :(得分:0)

您必须将所有BuyScreens存储在某种集合中,例如。 LinkedList<ButScreen>。您将能够遍历该集合并关闭相关的BuyScreens

或将JDialogs与父设置一起用作BuyScreens。当父框架/对话框关闭时,它们将自动关闭。