El formulario con el que viene Swing no puede satisfacer las necesidades de nuestras aplicaciones, por lo que debe crear marcos Jframe de cualquier imagen y forma, como la siguiente imagen:
Y puede establecer la transparencia de la imagen de fondo de formulario
Lo siguiente explica cómo lograr el efecto de la imagen de arriba:
(1) En primer lugar, necesita una buena imagen, como pergamino. Sin embargo, la imagen descargada es un rectángulo cuadrado, y la forma del pergamino está dentro de la imagen, por lo que usamos la función de corte en Meitu Xiuxiu o PS para elegir el papel pergamino, de la siguiente manera:
(2) Guarde la imagen como fondo transparente.
(3) Luego escriba un myJFrame hereda jframe, el código es el siguiente:
import com.sun.awt.awtutilidades; import javax.swing.*; import java.awt.*; clase pública myJFrame extiende jframe {private float alfa; public myJFrame (String BGPath, Float Alpha) {super (); myContentPane rp = new MyContentPane (BGPATH); rp.SetOpAque (falso); // Establezca el panel de contenido en transparente este.setContentPane (RP); this.setUndeCorated (verdadero); this.setsize (rp.img.geticonwidth (), rp.img.geticonheight ()); AwtUtility.setWindowopAque (this, false); // establecer en jframe como transparente this.alpha = alfa; } clase privada myContentPane extiende jpanel {public imageicon img; public MyContentPane (String BGPath) {super (); img = new Imageicon (test.class.getResource (bgpath)); } @Override protegido void PaintComponent (Graphics g) {alphacompositre ac = alphacomposis.getInstance (alfacomposis.src_over, alfa); Composite Old = ((Graphics2d) g) .getComposite (); ((Graphics2d) G) .SetCompositE (AC); if (img! = null) {g.drawimage (img.getImage (), 0, 0, getWidth (), getheight (), esto); } ((Graphics2d) g) .SetCompositE (antiguo); super.PaintComponent (g); }}} El código principal del programa anterior es: establecer JFrame en transparente, eliminar el borde de JFrame, establecer el panel de contenido en transparente y luego dibujar la imagen en el panel de contenido.
(4) Escriba una prueba de clase de prueba:
import javax.swing.*; import java.awt.*; Public Class Test {public static void main (string [] args) { /*** Establezca la transparencia de la imagen de fondo y la imagen de fondo, 0 es completamente transparente y 1.0f es opaca. */ myJFrame f = new myJFrame ("ab.png", 0.7f); F.SetLayout (NULL); Fuente Font = nueva fuente ("宋体", font.plain, 30); Jlabel user = new JLabel ("Nombre de usuario"); user.setFont (fuente); user.setBounds (100,150,100,30); JTextfield UserInput = new JTextField (); userInput.setFont (fuente); UserInput.SetBounds (200,145,250,40); JLabel PS = new JLabel ("contraseña"); Ps.SetFont (fuente); Ps.SetBounds (110,200,90,30); JTextfield psinput = new JTextField (); psinput.setFont (fuente); psinput.setBounds (200,195,250,40); F.Add (usuario); F.Add (UserInput); F.Add (PS); f.add (psinput); F.SetLocation (300,100); f.setDefaultCloseOperation (jframe.exit_on_close); F.SetVisible (verdadero); }}(5) Dado que se elimina el borde, el formulario no se puede arrastrar y estirar. Vea este artículo para Swing para realizar el arrastre y el estiramiento del formulario.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.