2009-09-03 38 views
1

我創建了一個帶有小窗口(組合框大小)的應用程序。我需要創建一個位於窗口之外的浮動面板,位於JComboBox中所選項目旁邊。 (見附圖)。Swing:JComboBox中選定項目旁邊的浮動面板

alt text

我一直在閱讀有關的JComboBox.setRenderer(customRenderer)等,但只是想在我走這條路,無論是在所有可能呈現窗口之外的東西。我懷疑它是,因爲組合框本身設法在窗口外面顯示它的彈出列表。

我對Swing很陌生,所以任何建議,將不勝感激。

回答

3

自定義渲染器無法實現,因爲Swing組件重量輕。也就是說,Java被賦予一個本地窗口,並且所有的組件繪圖都在該窗口中進行。在你的情況下,這是包含組合框的JFrame。

雖然你可以做的是創建一個新的未修飾窗口並相應地設置它的位置,並在裏面繪製任何你想要的。

編輯:如果Java需要在外部繪製它的窗口邊界(如彈出消息或組合框下拉菜單的情況下),如果組件落入邊界內,則使用擺動輕量級機制。但是,如果組件落在邊界外面,它會被一個awt重量較大的組件自動替換,該組件在活動窗口之外擁有自己的原生繪圖表面。

2

我已經實現了類似的想法,使用組合框渲染器和工具提示。每個項目的工具提示內容都可以使用HTML進行自定義和渲染。工具提示的位置可以設置在項目本身之外,從而創建與您的問題中呈現的設計非常相似的設計。

這裏是起點,爲您提供:

http://www.java2s.com/Code/Java/Swing-Components/ToolTipComboBoxExample.htm

+0

感謝尤金。你知道是否可以將工具提示設置爲在窗口外浮動,就像我的圖像一樣? – Ben 2009-09-04 01:41:31

+0

我認爲這應該是可能的 – 2009-09-04 05:16:25