2015-10-24 41 views
0

我需要重新創建在設置窗口外觀和感覺時出現的JFrameJDialog的半透明邊框。重新創建JFrame或JDialog的windows-look-and-feel邊框

我需要它作爲windows laf不允許你訪問標題欄(在邊框上)。實際上,我需要將MouseAdapter應用於JDialog,當它被拖動/按下/釋放時會收到通知。在windows laf中,由於無法訪問酒吧組件,因此只能應用ComponentListener,該選項僅在移動時纔會提供通知(因此,當用戶抓住它但尚未移動時不會捕獲任何內容,或者當用戶「釋放」它)。

因此,我決定使用未修飾的對話框並將偵聽器應用到我的自定義欄。然而,我想自定義對話框看起來完全一樣在窗戶拉夫(這意味着我需要重新創建邊框)。

我在Graphics2D方面經驗不足,無法覆蓋paintBorder()方法,所以我要求您的幫助。 有沒有人遇到過這個問題,並有一個經過測試的解決方案?

預先感謝您。

回答

1

從Java平臺標準版6(Java SE 6)Update 10發行版開始,您可以爲Swing應用程序添加半透明和異形窗口。

這意味着您可以讓您的JFrame模擬具有圓角和透明度的本機窗口。

在你的情況下,你的方法將在JFrame級別,而不是邊界級別,因爲邊框被繪製在JFrame(或JDialog,就此而言)的頂部。因此,如果JFrame尚未舍入,例如,paintBorder()方法仍將繪製在屏幕的矩形區域之上。

從Oracle檢查這tutorial覆蓋形狀和半透明JFrame