import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.*;
public class login extends JFrame {
JFrame f;
JLabel j1,j2;
JTextField jt1;
JPasswordField jf1;
JButton jb1,jb2;
JComboBox jcb;
Font f1 = new Font("宋体",Font.PLAIN,16);
public login() throws IOException{

BackImage bi = new BackImage();
bi.setBounds(0, 0, 518, 286);
this.add(bi);

f = new JFrame();
j1=new JLabel("用户名:");
j1.setFont(f1);
j1.setBounds(177, 115, 80, 20);

jt1=new JTextField(20);
jt1.setFocusable(true);
jt1.setBorder(BorderFactory.createLoweredBevelBorder());//设置下凹
jt1.setBounds(250, 115, 120, 20);

j2 = new JLabel("密码:");
j2.setFont(f1);
j2.setBounds(174, 150, 60, 25);

jf1 = new JPasswordField("20");
jf1.setBorder(BorderFactory.createLoweredBevelBorder());
jf1.setBounds(250, 150, 120, 20);

String []stu={"管理员","教师","学生"};
jcb=new JComboBox(stu);
jcb.setBounds(283, 180, 80, 20);

jb1 = new JButton("确定");
jb1.setBounds(238, 219, 60, 20);

jb2 = new JButton("取消");
jb2.setBounds(238, 219, 60, 20);

f.add(j1);
f.add(jt1);
f.add(j2);
f.add(jf1);
f.add(jcb);
f.add(jb1);
f.add(jb2);

f.setSize(518,286);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setTitle("用户登录");
f.validate();

}
class BackImage extends JPanel
   {
   Image im;
   public BackImage() throws IOException{
   try {
im = ImageIO.read(new File("image//login.jpg"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   }
   public void paintComponent(Graphics g){
   g.drawImage(im, 0, 0,587,350,this);
   }
   }
   
public static void main(String[] args) throws IOException{
login l =new login();
}

}
这个是我写的代码,但是它运行的时候老是显示一下界面,然后就只剩下一个取消按钮了!背景图片也实现不了?为什么呢?

解决方案 »

  1.   

    硬着头皮改了一下,*^_^*,这个代码,像是可视化工具拖出来的:
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.*;
    import java.io.File;
    import java.io.IOException;import javax.imageio.ImageIO;
    import javax.swing.*;public class login extends JFrame {
        BackImage f;
        JLabel j1, j2;
        JTextField jt1;
        JPasswordField jf1;
        JButton jb1, jb2;
        JComboBox jcb;
        Font f1 = new Font("宋体", Font.PLAIN, 16);    public login() throws IOException {//        BackImage bi = new BackImage();
    //        bi.setBounds(0, 0, 518, 286);
    //        this.add(bi);        f = new BackImage();
            f.setLayout(null);
            f.setBounds(0, 0, 518, 286);
            this.add(f);
            
            j1 = new JLabel("用户名:");
            j1.setFont(f1);
            j1.setBounds(177, 115, 80, 20);        jt1 = new JTextField(20);
            jt1.setFocusable(true);
            jt1.setBorder(BorderFactory.createLoweredBevelBorder());// 设置下凹
            jt1.setBounds(250, 115, 120, 20);        j2 = new JLabel("密码:");
            j2.setFont(f1);
            j2.setBounds(174, 150, 60, 25);        jf1 = new JPasswordField("20");
            jf1.setBorder(BorderFactory.createLoweredBevelBorder());
            jf1.setBounds(250, 150, 120, 20);        String[] stu = { "管理员", "教师", "学生" };
            jcb = new JComboBox(stu);
            jcb.setBounds(283, 180, 80, 20);        jb1 = new JButton("确定");
            jb1.setBounds(238, 219, 60, 20);        jb2 = new JButton("取消");
            jb2.setBounds(238, 219, 60, 20); // 位置跟确定按钮的位置重复了
            jb2.setBounds(298, 219, 60, 20);        f.add(j1);
            f.add(jt1);
            f.add(j2);
            f.add(jf1);
            f.add(jcb);
            f.add(jb1);
            f.add(jb2);        this.setSize(518, 286);
            this.setResizable(false);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setTitle("用户登录");
            this.validate();
            this.setVisible(true);    }    class BackImage extends JPanel {
            Image im;        public BackImage() throws IOException {
                try {
                    //im = ImageIO.read(new File("image//login.jpg")); // 这里不需要两个/
                    im = ImageIO.read(new File("resources/apple.png")); // 这里不需要两个/
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }        public void paintComponent(Graphics g) {
                g.drawImage(im, 0, 0, 587, 350, this);
            }
        }    public static void main(String[] args) throws IOException {
            login l = new login();
        }}