[英]How can I change the color or bounds of a Java Component without subclassing it?
我正在使用 Java計時框架來執行動畫。 我想要的是能夠在AWT
或Swing
組件上執行一些動畫而無需對其進行子類化。 我感興趣的動畫包括改變邊界、顏色或 alpha。 網上有很多關於如何對Component
進行子類化,然后覆蓋paint(Graphics)
方法以執行此類更改的示例,但是我想找到一種不同的方法。
我嘗試通過調用獲取Component
的圖形
Graphics2D g2d = (Graphics2D) component.getGraphics();
然后對其進行操作 - 例如設置 alpha 值:
AlphaComposite newComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, newVal);
g2d.setComposite(newComposite);
component.repaint();
然而這沒有任何作用。 我嘗試過其他方法 - 例如使用自定義TimingTarget
s 或PropertySetter
s,但我沒有任何運氣。 正確的做法是什么?
為了給這個問題提供更多的上下文,這是我的javaQuery庫,它是jQuery到Java 的一個端口,並且是在我之前的項目(帶有工作動畫) droidQuery 之后建模的。
使用搖擺(或 JFX)。 由於 AWT 使用本機平台組件,因此它很舊且可定制性較低:將每個 Java AWT 組件與本機組件對等。
有了邊界,我假設邊界您可以設置邊界(甚至是附加的)和顏色。 setOpaque(false)
允許透明。
永遠不應該獲取組件的 Graphics。 組件在明確定義的上下文中接收繪制事件:事件處理線程上的單線程、剪切、定位等。
所以使用組件的設置器,如果需要則invalidate
. And possibly a
. And possibly a
重繪(50L)`。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.