2011-11-08 4 views
0

私はSwingアプリケーション(ボタンやテキストフィールドなど)にコンポーネントを配置し、 '強調表示'するツールを構築しようとしています。私はheat mapsのアイデアを強調表示に使用することを考えていました。スイングアプリケーションのヒートマップを作成するには?

誰もこのようなことを使用したことがありますが、私はこれに関する多くの関連情報を見つけていないため、これらのアイデアをどのように生成できるかを示すことができます。私はあなたの質問から何かを逃した場合を除き、事前に助けを

感謝:)

答えて

2

さて、これはかなり簡単なはずです。ほとんどすべてのSwingコンポーネントの背景色を設定できます。たとえば、javax.swing.JComponentのすべてのサブクラスにはsetBackground()メソッドがあります。

第2のステップは、実際に色を割り当てることです。そのためには、最小値、最大値、観測値を知る必要があります。単純なヒートマップを作成する場合は、赤から赤への変換が必要な場合は、RGB Color仕様で赤成分の量を決定するだけです。これは、以下の式で行うことができます:あなたは、テキストフィールドのあなたのボタンの背景としてcolorを割り当てる

int red = ((value-min)/(max-min))*255; 
Color color = new Color(red, 255, 255) 

+0

これは良い提案です。あなたはオーバーレイを描く代わりにこれを行うことができます(下の私の回答を参照してください) – GETah

+0

このコメントのために多くのおかげで...色の数式は非常に有用だった...ありがとう – ict1991

0

私の提案はヒートマップに依存していませんが、あなたのニーズに合うかもしれません。 ほとんどのSwingのUIコンポーネントが持っているのJComponentから継承: - 親フレーム 上の部品の位置を返しますgetLocation方法 - あなたが見えるあなたのフレームにメソッドを追加することができます 部品のサイズを返しますgetSize方法を

コンポーネントを見つけたら、その場所に必要な任意のサイズ(矩形またはその他の形状)の半透明のオーバーレイを描画できます。 2Dグラフィックスを使用してください(exampleを参照)。 この方法で、メインフレーム上の任意のコンポーネントの輪郭をその位置で指定できます。 私はこれが役立つことを願っています。

関連する問題