0

actionListener に問題があります。Yes と No の 2 つの JButton しかない独自の単純なダイアログを作成しました。ボタンをクリックすると、actionListener が応答しません。

これは私のコードです:

private void showInfoNewUML() {        
    Dimension buttonsSize = new Dimension(60, 25);
    Dimension programSize = new Dimension(1200, 700);
    final JDialog dialogWindow = new JDialog(this, "Erase actual UML diagram"
            + " with his files", true);        
    JTextArea descDialogWindow = new JTextArea("Do you really erase actual\n"
            + "UML diagram with his files?   ");
    descDialogWindow.setEditable(false);
    descDialogWindow.setBackground(new Color(220, 220, 220));
    descDialogWindow.setBorder(null);
    dialogWindow.getContentPane().setBackground(new Color(220, 220, 220));
    dialogWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    dialogWindow.setModal(true);
    dialogWindow.setResizable(false);
    dialogWindow.setLayout(new FlowLayout());
    dialogWindow.setSize(310, 100);
    dialogWindow.setLocation((int) programSize.getWidth() / 2,
            (int) programSize.getHeight() / 2);
    JButton buttonYes = new JButton("Yes");
    JButton buttonNo = new JButton("No");
    buttonYes.setPreferredSize(buttonsSize);
    buttonNo.setPreferredSize(buttonsSize);
    dialogWindow.add(descDialogWindow);
    dialogWindow.add(buttonYes);
    dialogWindow.add(buttonNo);
    dialogWindow.setVisible(true);

    buttonYes.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            buttonAnoActionPerformed(e);
        }

        private void buttonAnoActionPerformed(ActionEvent e) {
            dialogWindow.setVisible(false);
        }
    });

    buttonNo.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            buttonNeActionPerformed(e);
        }

        private void buttonNeActionPerformed(ActionEvent e) {
            dialogWindow.setVisible(false);
        }
    });
}

ボタンをクリックした後、このダイアログを閉じたいと思います。十字で右上のボタンをクリックすると、ダイアログウィンドウが閉じます。

この問題を解決していただきありがとうございます。

4

1 に答える 1

2

を呼び出すに ActionListeners を追加してみてくださいdialogWindow.setVisible(true);

ダイアログはモーダルであるため、ダイアログが閉じられるまでshowInfoNewUMLブロックされdialogWindow.setVisible(true);ます。これは、有用なリスナーを登録するには遅すぎます。

于 2012-04-05T21:44:26.427 に答える