簡體   English   中英

如何使所有工具提示在Java中都是半透明的?

[英]How to make all tooltips semi-transparent in Java?

我設法使用UIManager並使用4個參數創建Colors來制作半透明的工具提示:

UIManager.put("ToolTip.background",new Color(0x40,0x51,0x67,0x40));

但是存在一個問題-實際上有兩個:出現在屏幕上的第一個工具提示始終忽略透明度,並且-不幸的是-窗口框架之外的工具提示也是如此。 根據我的理解(並根據我能找到的唯一信息來判斷),這是因為某些工具提示是重量級而不是輕巧的,這就是為什么它們出於某些原因而忽略我的顏色設置的原因。 雖然我可以使工具提示的內容與邊界保持足夠的距離,但這似乎是解決此問題的一種廉價方法,並且由於某種原因,它仍然無法覆蓋顯示為白色的第一個工具提示。

因此,一個笨拙的新手問:有沒有一種簡單的方法可以使重量級工具提示透明,而無需使我自己的類擴展PopupFactory和Popup? 如果沒有,您是否有任何提示,如果我決定創建新的類並將默認的PopupFactory替換為:

PopupFactory.setSharedInstance(new MyPopupFactory());

同樣,出於好奇,並且由於它涉及工具提示:為什么這樣做...

UIManager.put("ToolTip.background",new Color(0x40,0x51,0x67);

...同時替換ToolTip.background和ToolTip.backgroundInactive,而當我使用ColorUIResource時,我必須編寫兩個單獨的命令:

UIManager.put("ToolTip.background",new ColorUIResource(0x60,0x6a,0x76));
UIManager.put("ToolTip.backgroundInactive",new ColorUIResource(0x60,0x6a,0x76));

我知道我的問題可能有點混亂,但是任何建議都將不勝感激。

透明性對於重量級組件不起作用,這是正常現象-盡管某些平台支持透明性,但Swing不直接支持透明性。

您可以使用com.sun.awt.AWTUtilities(顯然不能移植到其他VM)使窗口透明(請參閱本文: https : //today.java.net/pub/a/today/2008/03/18 /translucent-and-shaped-swing-windows.html )。

看一下PopupFactory的JRE源代碼。 您可以調用setPopupType(2)以使工廠更喜歡重量級彈出窗口。 該方法不可見,因此您需要使用反射對其進行調用。 多數民眾贊成在黑客中,您不確定它將來是否會正常運行。

由於Swing不通過其標准API支持它,因此最明智的選擇可能是在不受支持的情況下不使用透明效果。 如果您想要統一的外觀,可能根本不使用透明度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM