O formulário que o swing vem não pode atender às necessidades de nossas aplicações; portanto, você precisa criar quadros JFrame de qualquer imagem e forma, como a seguinte figura:
E você pode definir a transparência da imagem de fundo do formulário
A seguir, explica como alcançar o efeito da figura acima:
(1) Antes de tudo, você precisa de uma boa imagem, como pergaminho. No entanto, a imagem baixada é um retângulo quadrado, e a forma do pergaminho está dentro da imagem, por isso usamos a função de recorte em Meitu Xiuxu ou PS para escolher o papel de pergaminho, como segue:
(2) Salve a imagem como um fundo transparente.
(3) Em seguida, escreva um Myjframe herda JFrame, o código é o seguinte:
importação com.sun.awt.awtutities; importar javax.swing.*; importar java.awt.*; classe pública myjframe estende jframe {private flutuante alfa; public myjframe (string bgpath, float alfa) {super (); myContentPane rp = new MyContentPane (BGPath); rp.setOpaque (false); // Defina o painel de conteúdo para transparente this.setContentPane (RP); this.setUnDecorated (true); this.SetSize (rp.img.geticonwidth (), rp.img.geticonheight ()); Awtutilities.setWindowOPAQUE (isto, false); // Defina como jframe como transparente this.alpha = alpha; } classe privada myContentPane estende jpanel {public imageicon img; public myContentPane (String bgPath) {super (); img = new imageicon (test.class.getResource (bgpath)); } @Override Protected Void PaintComponent (gráficos g) {alphacomposite AC = alphacomposite.getInstance (alphacomposite.src_over, alfa); Composto antigo = ((graphics2d) g) .getComposite (); ((Graphics2d) G) .SetComposite (AC); if (img! = null) {g.Drawimage (img.getImage (), 0, 0, getWidth (), getHeight (), this); } ((Graphics2d) g) .SetComposite (antigo); super.paintcomponent (g); }}} O código principal do programa acima é: Defina o JFRame como transparente, remova a borda do JFRame, defina o painel de conteúdo para transparente e, em seguida, desenhe a figura no painel de conteúdo.
(4) Escreva um teste de classe de teste:
importar javax.swing.*; importar java.awt.*; Public class Test {public static void main (string [] args) { /*** Defina a transparência da imagem de fundo e a imagem de fundo, 0 é totalmente transparente e o 1.0F é opaco. */ myjframe f = new myjframe ("ab.png", 0,7f); f.SetLayout (nulo); Fonte Fonte = nova fonte ("宋体", font.plain, 30); JLABEL User = new Jlabel ("Nome de usuário"); 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 ("senha"); ps.SetFont (fonte); Ps.setbounds (110,200,90,30); Jtextfield psinput = new jtextfield (); psinput.setFont (font); Psinput.setBounds (200.195.250,40); f.add (usuário); f.add (userInput); f.add (ps); f.add (psinput); f.SetLocation (300.100); f.SetDefaultCloseoperation (jframe.exit_on_close); f.SetVisible (true); }}(5) Como a borda é removida, o formulário não pode ser arrastado e esticado. Veja este artigo para Swing para realizar o arrasto e o alongamento do formulário.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.