2009-09-03 10 views
1

小さなウィンドウ(コンボボックスのサイズ)でアプリを作成しました。私はJComboBox内の選択された項目の横に、ウィンドウの外にあるフローティングパネルを作成する必要があります。 (添付画像参照)。私はJComboBox.setRenderer(customRenderer)について読んでてきたSwing:JComboBoxの選択項目の隣にフローティングパネルがあります

alt text

私はこの道を行く前などしかし、ちょうど窓の外に何かをレンダリングするためにすべての可能であるかどうか、疑問に思いました。コンボボックス自体がウィンドウの外側にポップアップリストを表示するように管理しているので、それは疑わしい。

私はSwingにとってとても新しいので、アドバイスをいただければ幸いです。

答えて

3

Swingコンポーネントは軽量なのでカスタムレンダラでは不可能です。つまり、Javaにはネイティブウィンドウが与えられ、すべてのコンポーネント描画がそのウィンドウで行われます。あなたの場合、それはコンボボックスを含むJFrameです。

あなたができることは、新しい装飾されていないウィンドウを作成し、それに応じて場所を設定し、その中に必要なものを描画することです。

EDIT:コンポーネントが範囲内に収まっている場合、Javaがそのウィンドウの境界線(ポップアップメッセージやコンボボックスのドロップダウンの場合のように)をペイントする必要があるとき、スイングライトウェイト機構を使用します。しかし、コンポーネントが境界の外に出た場合、自動的にアクティブなウィンドウの外に独自の描画面を持つ重い重いコンポーネントで置き換えられます。

2

コンボボックスレンダラーとツールチップを使用して同様のアイデアを実装しました。各アイテムのツールチップの内容は、HTMLを使用してカスタマイズしてレンダリングすることができます。ツールチップの場所はアイテム自体の外に設定することができ、あなたの質問に提示されたものと非常によく似たデザインが作成されます。

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

+0

おかげユージン:ここ

はあなたのための出発点です。私のイメージに従って、ウインドウの外に浮かせるようにツールチップを設定できるかどうか知っていますか? – Ben

+0

私はそれが可能であるべきだと思います –

関連する問題