界面中图片和组件不能同时显示

在做一个小程序时,图片和组件总是不能同时显示,调好后的代码如下:
package PasswordManeger;


import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


import javax.swing.Icon;
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.JTextField;
import javax.swing.SwingConstants;


public class LogInWindows  extends JFrame implements ActionListener
{
	private Function functionclass=new Function();
	
	private String urlofimagetoshow="C:\\Users\\lenovo\\Desktop\\信息管理器\\show.jpg";
	private String urloficon="C:\\Users\\lenovo\\Desktop\\信息管理器\\login.jpg";
	
	private Image icon;
	private ImageIcon imagetoshow;
	
	private JLabel idlabel=new JLabel("账号");
	private JLabel passwordlabel=new JLabel("密码");
	private JLabel showimagelabel;
	private  JTextField idtextfield=new JTextField();
	private  JTextField passwordtextfield=new JTextField();
	
	private JButton loginbutton=new JButton("登录");
	
	private JPanel  contentpane = new JPanel();
	
	public LogInWindows()
	{
		super("密码管理器");
		
		setContentPane(contentpane);
		
		contentpane.setLayout(null);
		
		icon=getToolkit().getImage(urloficon);
		setIconImage(icon);
		
		imagetoshow=new ImageIcon(urlofimagetoshow);
		showimagelabel=new JLabel(imagetoshow);
		this.getLayeredPane().add(showimagelabel,
			    new Integer(Integer.MIN_VALUE)); // 设置JLabel在最底层
		showimagelabel.setBounds(0, 0, 500,150);
		
		idlabel.setBounds(100,200,50,20);
		contentpane.add(idlabel);
		
		contentpane.setOpaque(false);//this  is  used  to  make  the  jpanel  transparency,or  picture  will not appear
		passwordlabel.setBounds(100,250,50,20);
		contentpane.add(passwordlabel);
		
		
		idtextfield.setBounds(160,200,200,20);
		contentpane.add(idtextfield);
		
		
		passwordtextfield.setBounds(160,250,200,20);
		contentpane.add(passwordtextfield);
		
		
		loginbutton.setBounds(150,300,100,20);
		loginbutton.addActionListener(this);
		contentpane.add(loginbutton);
		


		setBackground(Color.WHITE);
		setSize(500,400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		


	}
	
	public void actionPerformed(ActionEvent e)
	{
		boolean idexist=false;
		String sql="select * from INFORMATIONOFUSER";
		String dbdriver="oracle.jdbc.driver.OracleDriver";
		String dburl="jdbc:oracle:thin:@localhost:1521:orcl";
		String dbuser="scott";
		String dbpassword="123456";
		
		String passwordofuser="";
		
		try {
			Class.forName(dbdriver);
			Connection dataconnection=DriverManager.getConnection(dburl, dbuser, dbpassword);
			Statement statement=dataconnection.createStatement();
			ResultSet result=statement.executeQuery(sql);
			do
			{
				if(result.getString(1)==idtextfield.getText())
				{
					idexist=true;
					passwordofuser=result.getString(2);
					break;
				}
			}while(result.next());
			
			if(idexist==true||passwordtextfield.getText()==passwordofuser)
			{
				functionclass.setVisible(true);
			}
			else
			{
				JOptionPane.showMessageDialog(this,"账号或者密码错误");
			}
		}
		catch (ClassNotFoundException e1) {
			// TODO 自动生成的 catch 块
			e1.printStackTrace();
		}
		catch (SQLException e1) {
			// TODO 自动生成的 catch 块
			e1.printStackTrace();
		}
	}
	




}
现总结经验如下:1:显示图片时用JLabel来显示,不要用paint方法的那个。2:将图片放在底层,将其他组件所在的JPanel设置成透明后,在放上组件,注意一定要将JPanel设置成透明,否则还是不会显示。3:图片的url一定要带上完整的路径,否则只能用在和源代码同一文件夹下的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值