【问题标题】:Was JFrame disposed?JFrame 被处理了吗?
【发布时间】:2015-12-09 17:43:29
【问题描述】:

我有一个带有多个JFrame 窗口的应用程序。

我的主要JFrame 想知道另一个JFrame 是否已被处置。

我应该调用哪种方法来决定?

【问题讨论】:

    标签: java swing jframe


    【解决方案1】:

    虽然您可能应该避免使用the use of multiple JFrames,但isDisplayable() 是您可以使用的一种方法。

    例子:

    import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class Example {
    
        public Example() {
            JFrame frame = new JFrame("Frame 1");
            JFrame frame2 = new JFrame("Frame 2");
    
            JLabel label = new JLabel("");
    
            JButton button = new JButton("Check");
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    label.setText(frame2.isDisplayable() ? "Active" : "Disposed");
                }
            });
    
            JPanel panel = new JPanel();
            panel.add(button);
            panel.add(label);
    
            frame.setContentPane(panel);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(200, 100);
            frame.setVisible(true);
    
            frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            frame2.setSize(200, 100);
            frame2.setLocation(frame.getX() + frame.getWidth(), frame.getY());
            frame2.setVisible(true);
        }
    
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new Example();
                }
            });
        }
    }
    

    【讨论】:

      【解决方案2】:

      您将需要使用WindowListener 来检查它是否已被处理。

      【讨论】:

      • 我不想在它被处置时收到通知。我只是想在某个时间点检查一下。
      猜你喜欢
      • 2011-09-22
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多