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

来源:互联网 发布:知乎 财务进销存一体 编辑:程序博客网 时间:2024/06/05 07:58

在做一个小程序时,图片和组件总是不能同时显示,调好后的代码如下: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 appearpasswordlabel.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一定要带上完整的路径,否则只能用在和源代码同一文件夹下的

0 0
原创粉丝点击