做了个图书管理系统,想给登录界面加个图片,但是总是覆盖按钮,无法登陆
以下是代码
package com.bbm.view;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import com.bbm.db.UserDao;
import com.bbm.model.Users;
/*登录窗体*/
public class Login extends JFrame{
private static final Component JPanel = null;
Font f1=new Font("黑体", Font.BOLD, 32);
JLabel usernameJLabel,passwordJLabel;
JTextField usernameJTF;
JPasswordField pwdJPF;
private static Users user;
//此内部类需要放到下面的构造方法之上,否则,对象usernameJTF不识别
class LoginAction implements ActionListener {
@Override
public void actionPerformed(final ActionEvent e) {
if (!"".equals(usernameJTF.getText()) && !"".equals(new String(pwdJPF.getPassword()))) {
user = UserDao.check(usernameJTF.getText(), new String(pwdJPF.getPassword()));
if (user.getName() != null) {
try {
Library frame = new Library();
frame.setVisible(true);
Login.this.setVisible(false);
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "您输入的用户名或密码错误,不能登录!");
usernameJTF.setText("");
pwdJPF.setText("");
}
} else {
JOptionPane.showMessageDialog(null, "请输入用户名和密码!");
}
}
}
class ResetAction implements ActionListener {
@Override
public void actionPerformed(final ActionEvent e) {
usernameJTF.setText("");
pwdJPF.setText("");
}
}
public Login(){
super();
setSize(360,180);
//在整个界面的中间位置显示
int width=Toolkit.getDefaultToolkit().getScreenSize().width;
int height=Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width/2-200, height/2-150);
//插入背景
getContentPane().setLayout(null);
ImageIcon img = new ImageIcon("D:\\psu.jpg");
JLabel jl_bg = new JLabel(img); //背景
jl_bg.setBounds(0, 0, 360, 180); //设置位置和大小,先setLayout(null)一下。
getLayeredPane().add(jl_bg, new Integer(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);
setTitle("图书借阅系统登录界面");
final JPanel textPanel=new JPanel();//提示信息面板
final JPanel loginPanel=new JPanel();//登录信息面板
final JPanel buttonPanel=new JPanel();//登录取消按钮面板
//提示信息面板
JLabel jl1=new JLabel();
jl1.setFont(f1);
jl1.setText("图书借阅系统");
textPanel.add(jl1);
this.add(textPanel,BorderLayout.NORTH);
//登录信息面板设计
loginPanel.setLayout(new GridLayout(2,2));
usernameJLabel=new JLabel("用户名:");
usernameJLabel.setHorizontalAlignment(SwingConstants.CENTER);
usernameJTF=new JTextField();
passwordJLabel=new JLabel("密 码:");
passwordJLabel.setHorizontalAlignment(SwingConstants.CENTER);
pwdJPF=new JPasswordField();
loginPanel.add(usernameJLabel);
loginPanel.add(usernameJTF);
loginPanel.add(passwordJLabel);
loginPanel.add(pwdJPF);
//登录取消按钮面板设计
JButton confirmButton=new JButton("登录");
confirmButton.addActionListener(new LoginAction());
JButton resetButton=new JButton("重置");
resetButton.addActionListener(new ResetAction());
buttonPanel.add(confirmButton);
buttonPanel.add(resetButton);
this.add(loginPanel,BorderLayout.CENTER);
this.add(buttonPanel,BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时,退出程序
this.setVisible(true);//设置窗体显示,否则不显示。
setResizable(false);//取消最大化
}
public static void setUser(Users user) {
Login.user = user;
}
public static Users getUser() {
return user;
}
public static void main(String[] args) {
Login lg=new Login();
}
}
背景图片应该是最开始就有的,即在按钮之前就创建完毕,你的代码这边在后面编写,所以就会出现背景覆盖按钮的情况