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 でオブジェクトを明示的に破棄することはできません。オブジェクトへの参照 (ポインターと考えてください) がなくなると、オブジェクトはガベージ コレクションの対象としてマークされます。したがって、DialogX インスタンスへの古い参照を削除して新しい参照を作成するため、コードはほとんど問題ありません。必要なことはJDialog、DialogX クラスで拡張するか (その後、JDialog 変数を完全に削除できます)、またはstaticJDialog 変数の前にあるキーワードを削除することですg。次に、dialogx.dispose()(JDialog を拡張した) または呼び出しを転送する実装が必要なカスタム メソッドを呼び出すことができます (JDialog を拡張g.dispose()しませんでした)。

于 2013-05-03T13:17:36.440 に答える