簡體   English   中英

制作一個有光澤的JFrame和JDialog

[英]make a glossy JFrame and JDialog

我在閱讀Java文檔時發現,只要平台支持這種形狀的窗口,就很容易制作一個半透明的窗口,使它們透明和着色,但是我找不到使它們光滑的任何東西。

在awt或僅擺動時是否可以使框架或面板具有金屬外觀?

從跨平台的角度來看,我知道這可能是一個可怕的想法,但我想知道如果不借助某些第三方庫,是否有可能實現?

我在這里找到了按鈕光澤度示例: http : //www.andygibson.net/blog/tutorial/glass-button-tutorial-in-java/但這並不完全是金屬外觀,如果我復制使用矩形的方法而不是圓圈,它的縮放效果可能很差。

我一直在研究JavaFX,但它似乎是一個龐大的多用途程序包-如果我只想要一個簡單的工具,那就太過分了。

注意-如果您給減號,請善於解釋原因-否則,這只是一個混蛋。 我沒有發現這篇文章有什么不對,我確實指出了我所看的內容。 從我看來,我已經滿足了所有正式的要求,這不是主觀的問題。

您的請求只能通過調用Windows本機API來處理。 您必須與Windows DWM(台式Windows管理器)工具合作。 通常,通過調用DwmExtendFrameIntoClientArea函數來處理它。

用於玻璃效果的MSDN示例

很久以前,我嘗試使用Swing模仿玻璃(AKA Aero / Frost)效果。 這是部分可能的。 只要繪圖發生在Java端,就可以輕松編寫處理此問題的繪圖代碼(甚至是相當出色的性能)。

使用Swing可以做到這一點(請參閱內部窗格的Glass效果 ),而使用JavaFX應該更簡單。

但是,要處理您的精確請求-Windows邊框-必須使用本機WinApi。 從我的少量研究中,我僅發現SWT以有限的方式進行此操作(但未公開為可公開訪問的方法)。

我試圖通過JNA項目調用Windows Shell API。 我成功地更改了玻璃區域,但是效果令人不快:Swing尚未真正做好准備(〜JDK 7u5)來處理部分透明的JFrame。 我記得,在重畫期間,JFrame代碼使用某種顏色清除了Window。 我不得不強行將其更改為其他(與我通過調用Windows API指定的名稱相匹配),但最終出現了視覺混亂。

我嘗試對其進行調試,發現某些Java版本具有不同的代碼來清除JFrame的內容。 因此,即使我設法正確設置了所需的顏色,它也很容易隨JDK更新而中斷。

暫無
暫無

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

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