Java中的计时器问题-设置setRepeat(false)时时间未停止

Java中的计时器问题-设置setRepeat(false)时时间未停止,java,timer,javax.swing.timer,Java,Timer,Javax.swing.timer,我希望有人能帮我解决计时器的问题。运行timer.start()时,计时器将启动。然而,它似乎在无休止地重复 我只需要定时器执行一次。如果timer.setRepeats(false)不工作,如何实现这一点 ActionListener updatePane = new ActionListener() { public void actionPerformed(ActionEvent ae) { try { msgPaneDoc.ins

我希望有人能帮我解决计时器的问题。运行timer.start()时,计时器将启动。然而,它似乎在无休止地重复

我只需要定时器执行一次。如果timer.setRepeats(false)不工作,如何实现这一点

     ActionListener updatePane = new ActionListener() {

     public void actionPerformed(ActionEvent ae) {

     try {
            msgPaneDoc.insertString(msgPaneDoc.getLength(), "CLICK",  
                    msgPaneDoc.getStyle("bold_style")); 
         } catch (BadLocationException ex) {    
           }}}; 

        Timer timer = new Timer(3000,updatePane); 

         timer.start();
         timer.setRepeats(false);

你必须从内部调用它

试着用或

示例代码:

SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
        ActionListener actionListener = new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                System.out.println("Hello");
            }
        };
        Timer timer = new Timer(1000, actionListener);
        timer.start();
        timer.setRepeats(false);
    }
});

这仍然会在计时器上生成连续重复。我之所以知道这一点,是因为在“msgPaneDoc”中插入“CLICK”字符串时会重复使用我与您共享的示例代码,该代码会一次性打印
Hello
。它为我一次打印
Hello
。只需将您的问题更新为编辑部分,以显示您现在正在做什么。现在,我刚刚将u发送的代码放入If语句中,这样当我单击按钮时,它将启动计时器。我把你的确切代码放在上面,但问候仍在重复。