2

我有一个包含按钮的类(Class ButtonX)

当用户单击按钮时,它将创建类的实例DialogX

当我创建类的实例时,DialogX它会显示JDialog

  public class ButtonX {

    public ButtonX() {
        JFrame me = new JFrame();
        JButton n = new JButton("show dialog");
        n.addActionListener(ListenerX.listen);
        me.getContentPane().add(n);
        me.pack();
        me.setVisible(true);
    }

    public static void main (String[]args){
        new ButtonX();
    }
}

那个听众JButton

    public class ListenerX {
    public static ActionListener listen = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            DialogX dialogx = null;
            dialogx = new DialogX();
        }};
}

包含的类JDialog

 public class DialogX {
    static JDialog g = new JDialog();
    public DialogX() {
        JLabel label = new JLabel("label");
        g.getContentPane().setLayout(new FlowLayout());
        g.getContentPane().add(label);
        g.pack();
        g.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
        g.setVisible(true);
    }

}

我试图实现的是,当用户单击按钮时,它将破坏类的实例DialogX(如果存在),然后再次创建DialogX

该怎么办?

谢谢..

原谅我的英文。。

4

1 回答 1

4

您不能在 Java 中显式销毁对象。一旦没有更多对 Object 的引用(想想指针),它将被标记为符合垃圾收集条件。因此,您的代码几乎没问题,因为它删除了对 DialogX 实例的旧引用并创建了一个新引用。您需要做的是扩展JDialog您的 DialogX 类(然后您可以完全删除 JDialog 变量)或删除staticJDialog 变量之前的关键字g。然后您可以调用dialogx.dispose()(您扩展了 JDialog)或您需要实现的自定义方法,该方法将调用转发到g.dispose()(您没有扩展 JDialog)。

于 2013-05-03T13:17:36.440 回答