3

テキストとアイコンを含む単純な Jlabel 要素があります

代替テキスト

背景を設定すると、ラベル全体の色が変わります。

ラベルのテキスト セクションの背景色のみをレンダリングできるようにしたい、つまり、アイコンとテキストに別々の背景/前景を持たせたい。ラベルを選択または選択解除すると、アイコンとテキストの背後の色が反転します。JLabelを拡張するだけでこれを行うことは可能ですか?もしそうなら、どのメソッドをカスタマイズする必要がありますか?

代替テキスト

私の別のアイデアは、2 つの個別のラベル要素を持つパネルを作成することです。1 つはアイコンで、もう 1 つはテキストです。少し面倒に思えます。開始する前に、Swing でこれを達成するためのよりスマートな方法があるのではないかと考えています。

4

3 に答える 3

1

私はあなたがやっていることのスタイルが好きですが、JToggleButton を再実装しているようです。

以下は、左が選択され、右が選択されていないトグル ボタンの例です。

代替テキスト http://downloads.padlocksoftware.net/toggle.png

テキストの上に派手な背景はありませんが、独自のコンポーネントを実装する必要がないソリューションです。

アライメントは次のように設定されます。

jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
于 2010-03-25T14:31:55.327 に答える
0

JButtonは、画像とテキストのさまざまな配置オプションをサポートしています。ほとんどの場合、画像もテキストもボタンの幅または高さ全体を埋めません。したがって、ボタンのペイントをオーバーライドしたい場合を除き、1 つのボタンでそれを実現する IMO は非現実的です。

あなたの別のアイデアは、はるかに簡単な解決策です。そこでは、BorderLayoutまたはMigLayout目標を達成するために使用できます。

于 2010-03-25T14:21:17.740 に答える
0

使用しているアイコンの背景が透明だと思いますか? その場合は、背景色が一致するアイコンを使用できます。これを行うと、ラベル全体で setBackground() を使用できるようになりますが、テキストでしか表示されません。

于 2010-03-25T12:40:52.433 に答える