在展示模態JDialog之前繪製簡單動畫的最佳方式是什麼? (即從鼠標點擊點擴展到對話框位置的邊界)。我認爲可以在對話框的setVisible方法上繪製父框架的玻璃窗格。但是由於JDialog是父項的模式,因此在JDialog變得可見之前,由於EDT上的當前事件尚未完成,我找不到將繪圖事件抽入EDT的方法。在展示JDialog時繪製動畫
5
A
回答
1
您是否嘗試單獨顯示JDialog的annimation?爲了正確設置訂單,您可能需要將這些操作綁定到一次傳遞給EDT的可運行內容中。
如:
SwingUtilities.invokeLater(new Runnable(){
public void run(){
doAnnimation();
showDialog();
}
}
這可能是最好的子類的JDialog,這樣就可以只調用父類實現之前添加doAnnimation()邏輯來調用setVisible(..)或show()方法。
最後,我想你需要手動設置dalog的尺寸 - 我不記得Java是否會在顯示對話框前知道對話框的實際大小,因此您可能會收到一些無用信息如果您在顯示大小之前查詢大小,則可以使用您的annimation
0
您或許可以接受@ rcreswick的答案並稍微擴展一下,以使其工作。
void myShowDialog() {
new Thread(new Runnable() {public void run() {
SwingUtilities.invokeAndWait(new Runnable() { public void run() {
doAnimation();
} });
// Delay to wait for the animation to finish (if needed)
Thread.sleep(500);
SwingUtilities.invokeAndWait(new Runnable() { public void run() {
showDialog();
} });
} }).start();
}
這實在是太醜陋,將建立一個基本的ShowDialog()調用的被調用,但它應該工作。
1
也許你看看JSE 6中包含的SwingWorker項目。(Link to SwingWorker)在我正在閱讀的書「Filthy Rich Client」中,他們使用這個工具很多。也許你可以在書籍網站的示例中找到提示:http://filthyrichclients.org/
0
一種可能性是在Glass面板上繪製自己的對話框。然後你完全控制對話框,並可以繪製任何你想要的。玻璃窗格上的Here's a tutorial on creating animations。
相關問題
- 1. 動畫JDialog
- 2. 動畫時,正在繪製的UITableViewCell
- 3. 繪製動畫線
- 4. 動畫繪製Path2D
- 5. 在畫布中繪製動畫曲線
- 6. 聚焦動畫的JDialog
- 7. 使用可繪製動畫顯示動畫
- 8. 在Python中繪製動畫顫動者
- 9. 動畫可繪製MyLocationOverlay()
- 10. 如何繪製動畫UIImage?
- 11. 動畫繪製對象
- 12. 消除Java繪製動畫
- 13. 如何繪製動畫?
- 14. CSS3邊框繪製動畫
- 15. 動畫繪製networkx邊緣
- 16. 安卓繪製動畫線
- 17. 重疊可繪製動畫
- 18. 從底部動畫移動JDialog
- 19. 畫布 - 繪製時間
- 20. 如何繪製/重繪/動畫(MVC)
- 21. SurfaceView不顯示我想在我的MainActivity繪製的動畫動畫
- 22. html5動畫畫布已繪製元素
- 23. 在動畫矢量中繪製「fillColor」屬性可繪製
- 24. 在android中繪製動畫圈
- 25. 在UIView中動畫繪製線條
- 26. 如何在Silverlight中繪製動畫線?
- 27. 在flash動畫中繪製矩形
- 28. 在Three.js中爲線條繪製動畫
- 29. 動畫的線,而在WPF繪製
- 30. 繪製動畫將在目標C