2010-06-26 3 views
1

Я использую Java Swing для создания JDialog, и я пытаюсь создать кнопку Show/Hide details, чтобы показать/скрыть отчет в нижней части этого JDialog.Как создать кнопку Show/Hide details?

Он отлично работает для меня, но я хочу сделать это со временем, чтобы добавить небольшой эффект анимации, показывая/скрывая отчет, я использовал 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

Perfect ... javax.swing.Timer настолько прост и выполняет эту работу. – Brad

1

Попытка вызова myDialog.repaint() после установки размера в методе run() TimerTask.

+0

Спасибо, но он все еще показывает отчет сразу после окончания таймера. – Brad

 Смежные вопросы

  • Нет связанных вопросов^_^