java如何设置背景图片?并且不覆盖上面的组件?
2个回答
展开全部
用 内部样式表 不覆盖用div
追问
能写一下具体代码吗?谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
package windows;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.font.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRootPane;
import javax.swing.JTextField;
import util.ConnectionDB;
public class Location extends JFrame implements ActionListener{
//用户名的文本框
JTextField JTF = new JTextField(20);
//密码的文本行
JPasswordField JPF = new JPasswordField(25);
Location(){
//设置窗体标题
this.setTitle("用户登录");
//设置窗体大小
this.setSize(200, 200);
//设置背景色
this.setBackground(java.awt.Color.lightGray);
//窗体关闭时结束程序
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//获取内容窗格
Container jf_con = this.getContentPane();
//设置布局管理器
jf_con.setLayout(new BorderLayout());
//获得图片对象
ImageIcon backIcon=new ImageIcon("background.jpg");
//把图片绘制到背景面板上
JLabel backLabel=new JLabel(backIcon);
// 创建背景标签
backLabel.setSize(backIcon.getIconWidth(), backIcon.getIconHeight());
backLabel.setLocation(0, 0);
// 设置标签定位
backLabel.setLayout(new GridLayout(4,1));
//建立登录和注册按钮
JButton JB[] = new JButton[2];
JB[0] = new JButton("登录");
JB[1] = new JButton("注册新账号");
for(int i=0;i<2;i++)
{
JB[i].setForeground(Color.red);
Font font =new Font("黑体",0,16);
JB[i].setFont(font);
JB[i].addActionListener(this);
}
//建立用户名,注册和密码标签
JLabel JL[] = new JLabel[2];
JL[0] = new JLabel("用户名");
JL[1] = new JLabel("密码");
//建立面板
JPanel JP[] = new JPanel[4];
//用户名面板
JP[0] = new JPanel();
JP[0].setLayout(new GridLayout(2,1));
JP[0].add(JL[0]);
JP[0].add(JTF);
//密码面板
JP[1] = new JPanel();
JP[1].setLayout(new GridLayout(2,1));
JP[1].add(JL[1]);
JP[1].add(JPF);
//登录按钮面板
JP[2] = new JPanel(new FlowLayout());
JP[2].add(JB[0]);
//注册按钮面板
JP[3] = new JPanel(new FlowLayout());
JP[3].add(JB[1]);
//把面板的背景设置为透明
for(int i=0;i<4;i++)
JP[i].setOpaque(false);
//把所有面板放置到窗体上
backLabel.add(JP[0]);
backLabel.add(JP[1]);
backLabel.add(JP[2]);
backLabel.add(JP[3]);
jf_con.add(backLabel);
//把窗口移到屏幕中间
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
int x=(dim.width-200)/2;
int y=(dim.height-100)/2;
this.setLocation(x, y);
//去除窗体的最大化键
this.setResizable(false);
this.setVisible(true);
}
public static void main(String[] args){
new Location();
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JButton j=(JButton)e.getSource();
String x=null;
x=j.getText();
if(x=="登录"){
this.setVisible(false);
Connection con=ConnectionDB.getConnection();
String sql="select L_Pass,L_Degree from Location where L_Location=?";
PreparedStatement ps = null;
try {
ps = con.prepareStatement(sql);
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
ResultSet rs=null;
try {
ps.setString(1, JTF.getText());
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
rs=ps.executeQuery();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String pass = null;
String degree = null;
try {
while(rs.next()){
pass=rs.getString("L_Pass");
degree=rs.getString("L_Degree");
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String s=new String(JPF.getPassword());
if(!s.equals(pass)){
JOptionPane.showMessageDialog(null, "用户名或密码错误","警告",JOptionPane.ERROR_MESSAGE);
this.setVisible(true);
JPF.setText(null);
}
else{
if("0".equals(degree))
System.out.println("Client");
else if("1".equals(degree))
new Administrator();
else if("2".equals(degree))
System.out.println("Others");
}
}
else if(x=="注册新账号"){
this.setVisible(false);
new Registration();
}
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询