销毁类的实例,然后再创建它的实例
问题描述:
我有一个类(类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
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);
}
}
什么,我尽量做到0
public class ListenerX {
public static ActionListener listen = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DialogX dialogx = null;
dialogx = new DialogX();
}};
}
类是,当用户点击这个按钮,它会(如果存在的话)销毁DialogX
类的实例,然后创建DialogX
怎么办?
感谢..
原谅我的英语..
答
不能明确破坏Java对象。一旦没有更多的引用(想到指针)到左边的对象,它将被标记为有资格被垃圾收集。因此,您的代码是,几乎可以使用,因为它会删除旧的DialogX实例引用并创建一个新的引用。 您需要做的是使用DialogX类扩展JDialog
(然后您可以完全删除JDialog变量)或在JDialog变量g
之前删除static
keywoard。然后,您可以拨打dialogx.dispose()
(您扩展了JDialog)或您需要实施的自定义方法,以将呼叫转接到g.dispose()
(您没有扩展JDialog)。
+0
由于您没有添加行为,因此无需扩展'JDialog'。删除静态关键字就够了,但前面已经说过了。 – 2013-05-03 13:20:07
什么是您的问题 – 2013-05-03 13:10:32
@GuillaumePolet我需要创建一个新的JDialogX实例,每次用户点击按钮..但根据我的邮政编码,(我认为)它不创建一个新的实例..由JDialog显示必须总是有1 JLabel,但它不.. JDialog总是再次添加一个新的JLabel每次用户单击按钮.. – 2013-05-03 13:15:38
删除JDialog前面的静态g =新的JDialog();' – 2013-05-03 13:16:15