【发布时间】:2013-04-27 21:38:04
【问题描述】:
我有一个包含按钮的类(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 的实例
怎么办?
谢谢..
原谅我的英语..
【问题讨论】:
-
你的问题是什么
-
@GuillaumePolet 每次用户单击按钮时我都需要创建一个新的 JDialogX 实例。但根据我的帖子代码,(我认为)它不会创建一个新的实例。总是有 1 个 JLabel 但它没有.. JDialog 每次用户单击按钮时总是再次添加一个新的 JLabel..
-
去掉
JDialog g = new JDialog();前面的static -
是的,您可以采取不同的做法,但通常使用
static表示设计不佳或对编程概念理解不佳。static是 Java 中万恶之源(常量除外),所以尽量远离。 -
使用
static实际上会阻止垃圾收集器清理该引用。static经常导致内存泄漏(因此它是万恶之源)。我只能建议您阅读更多关于statickeyword 含义的信息
标签: java swing components awt