Swing アプリケーションのコンポーネント (ボタンやテキスト フィールドなど) を見つけて「強調表示」するツールを構築しようとしています。ハイライトにヒートマップのアイデアを使用することを考えていました。
これに関連する多くの関連情報が見つからないため、誰かがそのようなことを使用したことがあり、このアイデアのためにそれらをどのように生成できるかを示すことができるかもしれません.
事前に助けてくれてありがとう:)
Swing アプリケーションのコンポーネント (ボタンやテキスト フィールドなど) を見つけて「強調表示」するツールを構築しようとしています。ハイライトにヒートマップのアイデアを使用することを考えていました。
これに関連する多くの関連情報が見つからないため、誰かがそのようなことを使用したことがあり、このアイデアのためにそれらをどのように生成できるかを示すことができるかもしれません.
事前に助けてくれてありがとう:)
ええと、あなたの質問から何か見落としていない限り、これはかなり簡単なはずです。ほとんどすべての Swing コンポーネントの背景色を設定できます。たとえば、 のすべてのサブクラスにjavax.swing.JComponent
はsetBackground()
メソッドがあります。
2 番目のステップは、実際に色を割り当てることです。そのためには、最小値、最大値、および観測値を知る必要があります。白から赤などの単純なヒートマップを作成する場合は、RGBColor
仕様で赤成分の量を決定するだけで済みます。これは、次の式で行うことができます。
int red = ((value-min)/(max-min))*255;
Color color = new Color(red, 255, 255)
color
次に、テキスト フィールドのボタンの背景として割り当てます。
私の提案はヒートマップに依存していませんが、ニーズに合うかもしれません。ほとんどの Swing UI コンポーネントは、以下を持つ JComponent から継承します。 -getLocation
親フレーム上のコンポーネントの位置を返すメソッド -getSize
コンポーネントのサイズを返すメソッド コンポーネントの位置を指定して検索するメソッドをフレームに追加できます。フレーム上 (単純な衝突検出アルゴリズムが役立ちます)
そのコンポーネントが見つかったら、2D グラフィックスを使用して、その場所に任意のサイズ (長方形またはその他の形状) の半透明のオーバーレイを描画できます (例を参照)。このようにして、メイン フレーム上の任意のコンポーネントの位置を指定してアウトラインを作成できます。これが役立つことを願っています。