SwingはJava向けに設計されたGUIツールキットです。
スイングはJava Basic Classの一部です。
スイングには、テキストボックス、ボタン、分離ペイン、テーブルなどのグラフィカルユーザーインターフェイス(GUI)デバイスが含まれます。
Swingは、AWTよりも多くの優れたスクリーンディスプレイ要素を提供します。それらは純粋なJavaで書かれているので、Java自体のようにプラットフォームを越えて走ることができます。彼らはJFCの一部です。交換可能なパネルとテーマ(さまざまなオペレーティングシステムのデフォルトの特定のテーマ)をサポートしていますが、ネイティブプラットフォームが提供するデバイスを実際に使用する代わりに、表面上でそれらを模倣するだけです。これは、任意のプラットフォームでJavaによってサポートされている任意のパネルを使用できることを意味します。軽量コンポーネントの欠点は、実行が遅いことであり、利点はすべてのプラットフォームで統一された動作を採用できることです。
ボタンを実装する簡単な例を見てみましょう。
Import java.awt。*; Import java.awt.geom。*; Import javax.swing。*; class rbutton extends jbutton {public rbutton(string label){super(label); dimension size = getPreferredSize(); size.width = size.height = math.max(size.width、size.height); setpreferredsize(size); //この呼び出しにより、jbuttonは背景を描画しませんが、円の背景を描画できます。 setContenTERAEFILLILD(false); this.setbackground(color.gray);} //サークル保護されたボイド塗装コンポーネントの背景とラベルを描画(グラフィックスG){if(getModel()。isarmed()){// {g.setColor(getBackground());} g.filloval(0、0、getsize()。width -1、getsize()。height -1); //この呼び出しはラベルを描画し、長方形に焦点を合わせます。 Super.PaintComponent(g);} //単純なアークを使用して、ボタンの境界を描画します。保護されたボイドペイントボーダー(グラフィックスG){g.setcolor(getforeground()); g.drawoval(0、0、getsize()。 if(shape == null ||!shape.getBounds()。equals(getBounds())){shape = new ellipse2d.float(0、0、getWidth()、getheight());} jbutton button = new rbutton( "jackpot"); imageicon ic = new ImageIcon( "e://clientformssql//icons//item_group.gif"); jbutton button2 = new jbutton(ic); button.setbackground(color.gray); //このボタンを表示するフレームを生成します。 jframe frame = new jframe(); frame.setDefaultCloseoperation(jframe.exit_on_close); // frame.getContentPane()。setbackground(color.gray); frame.getContentPane() flowlayout()); frame.setsize(200、200); frame.setVisible(true);}}}結果:
次に、単純なクリックイベントを実装するボタンのJavaの例を共有します。
これが丸いスイングボタンを作成するためのヒントです。実際、このトリックは、あらゆる形状のボタンに便利に適用できますが、丸いボタンのみを作成します。丸いボタンを作成するときは、2つのことをする必要があります。最初のことは、適切な描画方法をオーバーロードして円を描くことです。 2番目のことは、ボタンが回答するように、いくつかのイベントを設定することです。これにより、円形ボタンの範囲をクリックするとボタンが応答するようになります(円形ボタンを含む長方形の範囲ではありません)。
Import java.awt。*; import java.awt.geom。*; import javax.swing。*; public class roundbutton extends jbutton {public roundbutton(string label){super(label); dimension size = getPreferredSize(); size.width = size.height = math.max(size.width、size.height); setpreferredsize(size); //この呼び出しにより、jbuttonは背景を描画しませんが、円の背景を描画できます。 setContenTERAEFILLILD(false);} //円の保護されたvoid paintcomponentの背景とラベルを描く(グラフィックスG){if(getModel()。isarmed()){//円形ボタンクラスのプロパティとして強調表示された色を選択できます。 0、getSize()。width -1、getsize()。高さ-1); //この呼び出しはラベルを描画し、長方形に焦点を合わせます。 Super.PaintComponent(g);} //単純なアークを使用して、ボタンの境界を描画します。保護されたボイドペイントボーダー(グラフィックスG){g.setcolor(getforeground()); g.drawoval(0、0、getsize()。 if(shape == null ||!shape.getBounds()。equals(getBounds())){shape = new ellipse2d.float(0、0、getWidth()、getheight());} jbutton button = new RoundButton( "jackpot"); button.setbackground(color.green); //このボタンを表示するフレームを生成します。 jframe frame = new jframe(); frame.getContentPane()。setbackground(color.yellow); frame.getContentPane()。add(button); frame.getContentPane()。setLayout(); frame.setsize(150、150); frame.setvisible(true);}}}}結果:
イベントをクリック:
JButtonの機能のほとんどを保存したいので、RoundButtonクラスにJButtonクラスを継承させます。 RoundButtonコンストラクターでは、setContentErtareafilled()メソッドが呼び出されます。これにより、ボタンは長方形の焦点領域を描画しますが、背景は描画されません。
次に、円の背景を描く必要があります。これは、PaintComponent()メソッドをオーバーロードすることで達成されます。その方法は、Graphics.filloval()メソッドを使用して、固体円を描画します。次に、PaintComponent()メソッドがSuper.PaintComponent()を呼び出して、ソリッドサークルにラベルを描画します。
この例は、塗装ボーダー()メソッドを上書きして、円形ボタンの境界にエッジを描画します。境界線が必要ない場合は、この方法を過負荷にすることもできません。この方法は、グラフィックスのdrawoval()メソッドを呼び出して、円の境界に薄い境界線を描画します。
注:jdktm1.2.2では、マウスをボタンの範囲に出入りすると、Jbuttonの動作には小さなバグがあります。理論的には、円形ボタンのマウスをクリックしてから、マウスをボタンの境界から遠ざけると、ボタンがその形状を変更するはずです。マウスをボタンの境界にドラッグすると、ボタンがその形状に応答する必要があります。残念ながら、この動作を含むコードは、contains()メソッドを呼び出すことはできません。代わりに、ボタンの「制限範囲」のみを使用することです(ボタンを含む最小長方形の範囲です)。マウスを円の境界内でわずかにドラッグした場合、つまり、境界ではなく円の範囲を残しても、ボタンはその形状を変えないことに注意してください。
要約します
上記は、Swing Roundボタンインスタンスコードを実装するJavaプログラミングに関するこの記事のすべての内容です。誰にとっても役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!