Le formulaire que Swing est livré ne peut pas répondre aux besoins de nos applications, vous devez donc créer des cadres JFrame de n'importe quelle image et forme, comme l'image suivante:
Et vous pouvez définir la transparence de l'image d'arrière-plan de la forme
Ce qui suit explique comment réaliser l'effet de l'image ci-dessus:
(1) Tout d'abord, vous avez besoin d'une bonne image, comme le parchemin. Cependant, l'image téléchargée est un rectangle carré, et la forme du parchemin est à l'intérieur de l'image, nous utilisons donc la fonction de découpe dans Meitu Xiuxiu ou PS pour choisir le papier parchemin, comme suit:
(2) Enregistrez l'image en arrière-plan transparent.
(3) Ensuite, écrivez un myjframe hérite de JFrame, le code est le suivant:
import com.sun.awt.awtutilities; importer javax.swing. *; import java.awt. *; La classe publique MyJFrame étend JFrame {Private Float Alpha; public myjframe (String bgpath, float alpha) {super (); myContentPane rp = new myContentPane (bgpath); rp.setOpaque (false); // Définissez le panneau de contenu sur transparent this.setContentPane (RP); this.setUndeCorated (true); this.setSize (rp.img.getIConWidth (), rp.img.getIconHeight ()); Awtutilities.setwindowoPaque (this, false); // défini sur jframe en tant que transparent this.alpha = alpha; } classe privée MyContentPane étend 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); }}} Le code principal du programme ci-dessus est: Définir JFrame sur transparent, supprimer la bordure de JFrame, définir le panneau de contenu sur transparent, puis dessiner l'image sur le panneau de contenu.
(4) Rédiger un test de classe de test:
importer javax.swing. *; import java.awt. *; Test de classe publique {public static void main (String [] args) {/ ** * Définissez la transparence de l'image d'arrière-plan et de l'image d'arrière-plan, 0 est entièrement transparent et 1.0f est opaque. * / myjframe f = new myjframe ("ab.png", 0,7f); f.setLayout (null); FONT FONT = NOUVEAU FONT ("宋体", FONT.PLAIN, 30); JLabel user = new JLabel ("nom d'utilisateur"); user.setfont (FONT); user.setbounds (100 150,100,30); JTextField userInput = new JTextField (); userInput.setFont (FONT); userInput.setBounds (200 145,250,40); JLabel ps = new JLabel ("mot de passe"); Ps.setfont (FONT); PS.SetBounds (110 200,90,30); JTextfield psInput = new JTextField (); pSInput.setfont (FONT); PSInput.SetBounds (200,195,250,40); F.Add (utilisateur); f.add (userInput); F.Add (PS); F.ADD (PSInput); F.SetLocation (300,100); f.setDefaultCloseOperation (jframe.exit_on_close); f.setVisible (true); }}(5) Étant donné que la bordure est enlevée, le formulaire ne peut pas être traîné et étiré. Voir cet article pour Swing pour réaliser la traînée et l'étirement de la forme.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.