2010-06-26 100 views
1

我正在使用Java Swing创建一个JDialog,并且我试图创建一个显示/隐藏详细信息按钮来显示/隐藏此JDialog底部的报告。如何创建显示/隐藏详细信息按钮?

它对我来说很好,但我希望随着时间的推移,在显示/隐藏报告时添加一个小动画效果,我使用了TimerTask,但它只是直接显示报告而没有任何慢动作。这里是我当前的代码:

private void showHideDetailsButtonActionPerformed() { 
    final MyDialog myDialog = this; 
    int fullHeight = this.getHeight(); 
    int smallHeight = this.getHeight()/2 - 4; 
    this.setSize(this.getWidth(), smallHeight); // By default hide the report. 

    if(this.getHeight() == smallHeight) { // Show details. 
     new Timer().schedule(
      new java.util.TimerTask() { 
       @Override 
       public void run() { 
        while(myDialog.getHeight() < fullHeight) { 
         myDialog.setSize(myDialog.getWidth(), myDialog.getHeight() + 1); 
         System.out.println(myDialog.getHeight()); 
        } 
       } 
      }, 
      800 
     ); 
    } 
} 

回答

1

使用javax.swing.Timer,不java.util.Timer中 ...或使用Trident

+0

完美... javax.swing.Timer非常简单,并且可以完成任务。 – Brad 2010-06-27 07:58:46

1

尝试在设置TimerTask的run()方法中的大小后调用myDialog.repaint()

+0

谢谢,但它仍然在定时器间隔结束后直接显示报告。 – Brad 2010-06-27 08:00:02