Я использую 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
);
}
}
Используйте javax.swing.Timer, а не java.util.Timer... или используйте Trident.
Попытка вызвать myDialog.repaint ()
после установки размера в методе TimerTask run ()
.