鍍金池/ 問答/Java  HTML/ jbutton doClick()方法不起作用

jbutton doClick()方法不起作用

我單元測試的時候用JDialog中的button點擊,發(fā)現(xiàn)不起作用

public class Message extends JDialog implements ActionListener {
    protected JFrame messageFrame;
    protected JLabel messsageLabel;
    protected JButton closeButton;

    public Message(JFrame jFrame) {
        //調(diào)用父類構(gòu)造函數(shù)
        super(jFrame, "提示", true);

        //初始化私有變量
        messsageLabel = new JLabel("", JLabel.CENTER);      //文字居中對齊
        closeButton   = new JButton();

        //對話框初始化
        messageFrame = jFrame;
        this.setSize(300, 200);
        this.setLayout(new GridBagLayout());
        this.setDefaultCloseOperation(HIDE_ON_CLOSE);

        //關(guān)閉按鈕樣式設(shè)置
        closeButton.setText("確定");
        closeButton.setSize(50,50);

        //添加組件
        this.getContentPane().add(messsageLabel);
        this.getContentPane().add(closeButton);

        //為組件注冊監(jiān)聽事件
        closeButton.addActionListener(this);
    }

    public void showErrorMessage(String message) {

        messsageLabel.setText(message);         //label組件添加文字
        this.setLocation(messageFrame.getX()+ messageFrame.getWidth(), messageFrame.getY());     //相對定位
        this.setVisible(true);                  //顯示對話框
    }

    public void actionPerformed(ActionEvent e) {
        dispose();      //關(guān)閉JDialog
    }
}

測試代碼

public class ApplicationTest {
    @Test
    public void main() throws Exception {
        //新建一個注冊界面
        Register register = new Register();
        assertTrue(register.isShowing());       //斷言界面正在處于點擊狀態(tài)

        //準(zhǔn)備相關(guān)數(shù)據(jù)
        User user = new User("liming@qq.com", "liming");
        register.username.setText(user.getUsername());
        register.password.setText(user.getPassword());
        register.repassword.setText(user.getPassword());

        register.register.doClick();                    //手動觸發(fā)點擊按鈕事件

        System.out.println(register.alertMessage.messsageLabel.getText());
        assertEquals("注冊成功!", register.alertMessage.messsageLabel.getText());
        register.alertMessage.closeButton.doClick();    //點擊確定按鈕
//
//        assertFalse(register.alertMessage.isShowing()); //斷言窗口消失
    }

}

然后發(fā)現(xiàn)doClick方法不會起作用,也就是確定按鈕不會自定被點擊

回答
編輯回答
墨沫

我不是代碼的作者,我只是代碼的搬運工

ActionEvent event;
long when;

when  = System.currentTimeMillis();
event = new ActionEvent(button, ActionEvent.ACTION_PERFORMED, "Anything", when, 0);

for (ActionListener listener : button.getActionListeners()) {
    listener.actionPerformed(event);
}

原文出處:
https://stackoverflow.com/que...

2017年4月7日 08:42