Java 正在尝试为我的登录框设置背景图像

Java 正在尝试为我的登录框设置背景图像,java,swing,Java,Swing,我想创建一个像这样的登录框架()。 我使用setBounds()方法设置这些组件,方法是使用setBound将setLayout()设置为null。现在我想在我的登录框中添加一个背景图像,但由于我使用了setLayout()将其设置为null,因此无法设置图像 `public LoginFrame() { JFrame frame=new JFrame("Login"); frame.setDefaultCloseOperation(frame.EXI

我想创建一个像这样的登录框架()。 我使用
setBounds()
方法设置这些组件,方法是使用
setBound
将setLayout()设置为null。现在我想在我的登录框中添加一个背景图像,但由于我使用了
setLayout()
将其设置为null,因此无法设置图像

`public LoginFrame()
    {

    JFrame frame=new JFrame("Login");

            frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);


        frame.setLayout(null);

            uid=new JLabel("Email Id");
    uid.setBounds(60,50,120,25);
            frame.add(uid);

            tid=new JTextField(20);
        tid.setBounds(120, 50,150,24);
            frame.add(tid);

            upass=new JLabel("Password");
    upass.setBounds(53,80,120,25);
            frame.add(upass);

            tpass=new JPasswordField(20);
            tpass.setBounds(120, 80,150,24);
                frame.add(tpass);

                Login=new JButton("Login");
                Login.setBounds(150,110,80,25);
                frame.add(Login);

                    frame.setSize(370,216);
            frame.setResizable(false);
            frame.setVisible(true);

    frame.setLocationRelativeTo(null);
    JLabel background=new JLabel(new ImageIcon("C:\\Users\\Tousif\\Desktop\\Login.jpg"));
    add(background);
}

public static void main(String []arg)
{
    new LoginFrame();
}

}`

尝试此操作,您需要使用
setContentPane
添加背景图像。您需要先添加背景图像,然后再添加标签、文本字段等其他对象

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginFrame{
    public LoginFrame() {
        JLabel uid, upass;
        JTextField tid;
        JPasswordField tpass;
        JButton Login;

        JFrame frame = new JFrame("Login");

        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        frame.setLayout(null);
        JLabel background = new JLabel(new ImageIcon(
                "C:\\Users\\Tousif\\Desktop\\Login.jpg"));
        frame.setContentPane(background);

        uid = new JLabel("Email Id");
        uid.setBounds(60, 50, 120, 25);
        frame.add(uid);

        tid = new JTextField(20);
        tid.setBounds(120, 50, 150, 24);
        frame.add(tid);

        upass = new JLabel("Password");
        upass.setBounds(53, 80, 120, 25);
        frame.add(upass);

        tpass = new JPasswordField(20);
        tpass.setBounds(120, 80, 150, 24);
        frame.add(tpass);

        Login = new JButton("Login");
        Login.setBounds(150, 110, 80, 25);
        frame.add(Login);

        frame.setSize(370, 216);
        frame.setResizable(false);


        frame.setLocationRelativeTo(null);

        frame.setVisible(true);
    }

    public static void main(String[] arg) {
        new LoginFrame();
    }
}
但是由于我使用setLayout()将其设置为null,因此无法设置图像

没错。不要使用空布局。Swing设计用于布局管理器

作为一个简单的例子,您可以执行以下操作:

JLabel background = new JLabel(...);
background.setLayout( new GridLayout(0, 2) );
background.add(label1);
background.add(textField1);
background.add(label2);
background.add(textField2);
frame.add(background);
如果您不喜欢该布局,请使用其他用户