Swing:启用延迟按钮

时间:2012-05-10 13:17:49

标签: java swing delay jbutton

private void OptionsActionPerformed(java.awt.event.ActionEvent evt) 
{ 
 // After clicking on button X, I want 4 other buttons to show up
 // in a sequential order

ButtonTrue(); 
} 


public void ButtonTrue() 
{
    Audio_Options.setVisible(true);
    letsSleep();
    Control_Options.setVisible(true);
    letsSleep();
    Display_Options.setVisible(true);
    letsSleep();
    Network_Options.setVisible(true);
}

 public void letsSleep()
{
    try {
        Thread.sleep(10000);
    } catch (InterruptedException ex) {
        Logger.getLogger(MainMenu.class.getName()).log(Level.SEVERE, null, ex);
    }
}

我有4个按钮。我希望它们按顺序出现,例如: Button1 - 10秒 - Button2 - 10秒 - Button3 - 10秒 - 按钮4

问题:每当我调用函数“ButtonTrue()”时,它们都会在等待30秒后一起出现。什么可能导致这个问题发生?

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:0)

您应该使用不同的线程:

javax.swing.Timer timer = new Timer(10000, new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    //...Update the progress bar...
        Control_Options.setVisible(true);

        timer.stop();

    }    
});
timer.start();

您的按钮必须是匿名ActionListener的最终范围。

答案 2 :(得分:0)

我认为问题是所有setVisble调用都在一个线程内,而不是EventDispatchThread。您可以尝试致电:

if(EventQueue.isDispatchThread()) {
    ButtonTrue();
} else {
    EventQueue.invokeAndWait(new Runnable() {
        ButtonTrue();
    });
}