1

小さなウィンドウ(コンボボックスのサイズ)のアプリを作成しました。JComboBoxで選択したアイテムの隣に、ウィンドウの外側に配置されるフローティングパネルを作成する必要があります。(添付画像を参照)。

代替テキスト

JComboBox.setRenderer(customRenderer)などについて読んでいますが、このパスを進む前に、ウィンドウの外で何かをレンダリングできるかどうか疑問に思っていました。コンボボックス自体がポップアップリストをウィンドウの外にレンダリングすることができるので、そうだと思います。

私はSwingを初めて使用するので、アドバイスをいただければ幸いです。

4

2 に答える 2

3

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

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

編集: Java がウィンドウの境界の外側をペイントする必要がある場合 (ポップアップ メッセージやコンボ ボックスのドロップダウンの場合など)、コンポーネントが境界の内側にある場合は、swing 軽量メカニズムを使用します。ただし、コンポーネントが境界の外側にある場合は、アクティブなウィンドウの外側に独自のネイティブ描画面を持つ awt 重量コンポーネントに自動的に置き換えられます。

于 2009-09-03T23:17:47.980 に答える
2

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

これがあなたの出発点です:

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

于 2009-09-04T01:10:56.410 に答える