スイングに付属するフォームには、アプリケーションのニーズを満たすことができないため、次の画像などの画像と形状のJFrameフレームを作成する必要があります。
フォームの背景画像の透明性を設定できます
以下は、上記の写真の効果を達成する方法を説明しています。
(1)まず第一に、羊皮紙などの良い写真が必要です。ただし、ダウンロードされた画像は正方形の長方形であり、羊皮紙の形状は写真の内側にあるため、次のように、羊皮紙またはPSのカットアウト関数を使用して次のように使用します。
(2)透明な背景として画像を保存します。
(3)次に、myJFrameがJFrameを継承すると、コードは次のとおりです。
com.sun.awt.awtutilitiesをインポートします。 javax.swing。*; java.awt。*;パブリッククラスMyJFrameはjFrame {private float alphaを拡張します。 public myjframe(string bgpath、float alpha){super(); myContentPane rp = new MyContentPane(BGPATH); rp.setopaque(false); //コンテンツパネルを透明に設定します。 this.setundecorated(true); this.setsize(rp.img.geticonwidth()、rp.img.geticonheight()); awtutilities.setWindowopaque(this、false); // jframeに透明に設定します。 }プライベートクラスmyContentPane拡張jpanel {public ImageIcon IMG; public myContentPane(String BGPATH){super(); img = new ImageIcon(test.class.getResource(bgpath)); } @Override Protected void PaintComponent(Graphics G){alphacomposite ac = alphacomposite.getInstance(alphacomposite.src_over、alpha); composite old =((graphics2d)g).getComposite(); ((graphics2d)g).setComposite(ac); if(img!= null){g.drawimage(img.getimage()、0、0、getWidth()、getheight()、this); }((graphics2d)g).setComposite(old); Super.PaintComponent(g); }}}上記のプログラムの主なコードは次のとおりです。JFrameを透明に設定し、JFrameの境界を削除し、コンテンツパネルを透過的に設定してから、コンテンツパネルに絵を描画します。
(4)テストクラスのテストを書きます:
javax.swing。*; java.awt。*; public class test {public static void main(string [] args){ /***背景画像と背景画像の透明度を設定します。0は完全に透明で、1.0fは不透明です。 */ myjframe f = new myjframe( "ab.png"、0.7f); f.setlayout(null); font font = new Font( "宋体"、font.plain、30); jlabel user = new Jlabel( "username"); user.setfont(font); user.setbounds(100,150,100,30); jtextfield userininput = new jtextfield(); userInput.setFont(font); userInput.setBounds(200,145,250,40); jlabel ps = new Jlabel( "Password"); ps.setfont(font); ps.setbounds(110,200,90,30); jtextfield psinput = new jtextfield(); psinput.setfont(font); psinput.setbounds(200,195,250,40); f.add(user); f.add(userInput); f.add(ps); f.add(psinput); F.SetLocation(300,100); f.setDefaultCloseoperation(jframe.exit_on_close); f.setVisible(true); }}(5)境界線が削除されるため、フォームをドラッグして伸ばすことはできません。 Swingについては、フォームのドラッグとストレッチを実現するために、この記事を参照してください。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。