具有图片背景的登录界面
三个类:LoginFrame , LoginPane ,BackGroundPane。
一张图片:1.jpg,放到eclipse新建的images文件夹中
代码:
1、
import javax.swing.JFrame;
import day18.LoginPane; //根据新建不同的包选择
public class LoginFrame extends JFrame {
public LoginFrame() {
// setLocation(400,500); //设置位置
setLocationRelativeTo(null);// 居中
setSize(500, 400);// 窗口尺寸大小
setResizable(false);// 禁止调节窗口大小
//setBounds(100, 522, 100, 120);// 设置位置和尺寸大小
LoginPane lp = new LoginPane("images/1.jpg");
setContentPane(lp);//替换原来的默认面板
}
public static void main(String[] args) {
LoginFrame lf = new LoginFrame();//创建窗口对象
lf.setVisible(true);
}
}
2、
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* 登录面板 - 需要继承JPanel才能成为面板
*
*/
public class LoginPane extends BackGroundPane{
/**用户名*/
private JLabel usernameLb;
/**密码*/
private JLabel passwordLb;
/**用户名输入框*/
private JTextField usernameTf;
/**密码输入框*/
private JPasswordField passwordPf;
/**登录按钮*/
private JButton loginBtn;
/**重置按钮*/
private JButton resetBtn;
public LoginPane(String imageUrl){
super(imageUrl);
setBackground(Color.GREEN);//设置背景颜色
initComponents();//初始化组件
layoutComponents();//布局组件
}
/**
* 初始化组件
*/
private void initComponents(){
usernameLb = new JLabel("用户名");
passwordLb = new JLabel("密码");
usernameTf = new JTextField();
passwordPf = new JPasswordField();
loginBtn = new JButton("登录");
resetBtn = new JButton("重置");
}
/**
* 布局组件
*/
private void layoutComponents(){
setLayout(null);//绝对定位布局
usernameLb.setBounds(80, 50, 50, 30);//设定组件的绝对位置和大小
usernameTf.setBounds(150, 50, 150, 30);
passwordLb.setBounds(80, 100, 50, 30);//设定组件的绝对位置和大小
passwordPf.setBounds(150, 100, 150, 30);
loginBtn.setBounds(100, 150, 80, 30);
resetBtn.setBounds(200, 150, 80, 30);
add(usernameLb);
add(usernameTf);
add(passwordLb);
add(passwordPf);
add(loginBtn);
add(resetBtn);
}
}
3、
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
/**
* 具有背景的面板
*/
public class BackGroundPane extends JPanel {
private String imageUrl;
public BackGroundPane(String imageUrl) {
super();
this.imageUrl = imageUrl;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(null!=imageUrl){
try {
Image img = ImageIO.read(new File(imageUrl));
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果如下: