在做一个小程序时,图片和组件总是不能同时显示,调好后的代码如下:
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一定要带上完整的路径,否则只能用在和源代码同一文件夹下的
界面中图片和组件不能同时显示
最新推荐文章于 2021-12-04 16:37:55 发布