嗨我試圖在學校項目的界面上製作碼頭般的效果。當我將鼠標懸停在他們身上時,我只需要幾個按鈕就可以變大,這是我設法實現的。問題在於它會立即發生,而我希望它是原始尺寸和新尺寸之間的緩慢過渡。這是我試圖做的:慢慢增加jButton的大小
public void biggerButton(JButton boton) {
Runnable runnable = new Runnable() {
@Override
public void run() {
int i = 0;
while (i < 10) {
boton.setSize(i + boton.getWidth(), i + boton.getHeight());
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
i++;
}
}
};
runnable.run();
}
代碼在鼠標進入放置在容器上的按鈕時運行。如果有人能幫我一把,我會非常感激。由於
嘗試重畫窗口並使用線程安全的swing方法:https://docs.oracle.com/javase/tutorial/uiswing/concurrency/ –
所以,基本上,你想要做的是***動畫* **(UI組件的大小)。在這種情況下,您目前的方法是基於循環直接以像素爲單位增加大小***是錯誤的;因爲不同用戶的系統會以不同的速度運行,導致動畫不一致;因爲有些情況下動畫需要被中斷,甚至在中途反轉,就像你的情況一樣,如果用戶在「增長」動畫結束之前將鼠標移出按鈕。 ***動畫製作的正確方法是使用遊戲開發中使用的*** Delta-Time(#GoogleIt)。 – XenoRo
謝謝,這正是我想要做的。我最終可以通過使用一對庫和動畫來做到這一點 –