/**
 * 仿制QQ登陆界面
 */
package UI;
import javax.swing.*;import java.awt.*;
public class LoginQQ extends JFrame{
//定义常用的组件
//北部的区域的JLabel
JLabel jl1;
JPanel jp5;
//南部区域
JButton jb1,jb2,jb3;
JPanel jp1;
//中部区域
JTabbedPane jtp;//选项卡窗格
JPanel jp2,jp3,jp4;
JLabel jl2,jl3,jl4,jl5;
//号码文本框
JTextField jtf1;
//密码
JPasswordField jpf;
//清除号码的Button
JButton jb4;
//隐身,登陆
JCheckBox jcb1,jcb2;

public static void main(String[] args) {
LoginQQ login=new LoginQQ(); }
//创造组件的操作
public LoginQQ(){
jl2=new JLabel("QQ号码:",JLabel.CENTER);
jl3=new JLabel("QQ密码:",JLabel.CENTER);
jl4=new JLabel("忘记密码",JLabel.CENTER);
jl4.setFont(new Font("宋体",Font.PLAIN,12));//设置字体样式
jl4.setForeground(Color.BLUE);//设置字体的颜色
jl5=new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>");
//当鼠标移动到上边时候变成一只手
jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
//输入号码框
jtf1=new JTextField();
//输入密码框
jpf=new JPasswordField();

jb4=new JButton("删除账号");
//复选框的操作
jcb1=new JCheckBox("隐身登陆");
jcb2=new JCheckBox("记住密码");

//北部区域
jl1=new JLabel(new ImageIcon("images/touxiang.jpg"));
jp5=new JPanel();
jp5.add(jl1);


//南部区域
jp1=new JPanel();

jb1=new JButton("登陆");
jb2=new JButton("取消");
jb3=new JButton("向导");

jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3);


//中部区域
jtp=new JTabbedPane();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jp3.setBackground(Color.red);
jp4.setBackground(new Color(0,0,255));

//给面板添加到选项卡窗格上
jtp.add("QQ号码",jp2);
jtp.add("手机号码",jp3);
jtp.add("电子邮件",jp4);

jp2.setLayout(new GridLayout(3,3));

jp2.add(jl2);
jp2.add(jtf1);
jp2.add(jb4);

jb2.add(jl3);
jb2.add(jpf);
jp2.add(jl4);

jp2.add(jcb1);
jp2.add(jcb2);
jp2.add(jl5);

this.add(jp1,BorderLayout.SOUTH);
this.add(jp5,BorderLayout.NORTH);
this.add(jtp,BorderLayout.CENTER);

//展现组件
this.setIconImage(new ImageIcon("images/icon.jpg").getImage());
this.setTitle("腾讯qq");
this.setResizable(false);
this.setSize(300, 250);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);


}

}

解决方案 »

  1.   


    /**
     * 仿制QQ登陆界面
     */
    import javax.swing.*;import java.awt.*;public class LoginQQ extends JFrame {
    // 定义常用的组件
    // 北部的区域的JLabel
    JLabel jl1;
    JPanel jp5;
    // 南部区域
    JButton jb1, jb2, jb3;
    JPanel jp1;
    // 中部区域
    JTabbedPane jtp;// 选项卡窗格
    JPanel jp2, jp3, jp4;
    JLabel jl2, jl3, jl4, jl5;
    // 号码文本框
    JTextField jtf1;
    // 密码
    JPasswordField jpf;
    // 清除号码的Button
    JButton jb4;
    // 隐身,登陆
    JCheckBox jcb1, jcb2; public static void main(String[] args) {
    LoginQQ login = new LoginQQ(); } // 创造组件的操作
    public LoginQQ() {
    jl2 = new JLabel("QQ号码:", JLabel.CENTER);
    jl3 = new JLabel("QQ密码:", JLabel.CENTER);
    jl4 = new JLabel("忘记密码", JLabel.CENTER);
    jl4.setFont(new Font("宋体", Font.PLAIN, 12));// 设置字体样式
    jl4.setForeground(Color.BLUE);// 设置字体的颜色
    jl5 = new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>");
    // 当鼠标移动到上边时候变成一只手
    jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    // 输入号码框
    jtf1 = new JTextField(8);
    // 输入密码框
    jpf = new JPasswordField(8); jb4 = new JButton("删除账号");
    // 复选框的操作
    jcb1 = new JCheckBox("隐身登陆");
    jcb2 = new JCheckBox("记住密码"); // 北部区域
    jl1 = new JLabel(new ImageIcon("images/touxiang.jpg"));
    jp5 = new JPanel();
    jp5.add(jl1); // 南部区域
    jp1 = new JPanel(); jb1 = new JButton("登陆");
    jb2 = new JButton("取消");
    jb3 = new JButton("向导"); jp1.add(jb1);
    jp1.add(jb2);
    jp1.add(jb3); // 中部区域
    jtp = new JTabbedPane();
    jp2 = new JPanel();
    jp3 = new JPanel();
    jp4 = new JPanel();
    jp3.setBackground(Color.red);
    jp4.setBackground(new Color(0, 0, 255)); // 给面板添加到选项卡窗格上
    jtp.add("QQ号码", jp2);
    jtp.add("手机号码", jp3);
    jtp.add("电子邮件", jp4); jp2.setLayout(new GridLayout(3, 3));
    JPanel pnl1 = new JPanel();
    pnl1.setLayout(new FlowLayout(FlowLayout.LEFT,0,15));
    jp2.add(jl2);
    pnl1.add(jtf1);
    jp2.add(pnl1);
    jp2.add(jb4);
    JPanel pnl2 = new JPanel();
    pnl2.setLayout(new FlowLayout(FlowLayout.LEFT,0,13));
    jp2.add(jl3);
    pnl2.add(jpf);
    jp2.add(pnl2);
    jp2.add(jl4);

    jp2.add(jcb1);
    jp2.add(jcb2);
    jp2.add(jl5); this.add(jp1, BorderLayout.SOUTH);
    this.add(jp5, BorderLayout.NORTH);
    this.add(jtp, BorderLayout.CENTER); // 展现组件
    this.setIconImage(new ImageIcon("images/icon.jpg").getImage());
    this.setTitle("腾讯qq");
    this.setResizable(false);
    this.setSize(300, 250);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true); }}
      

  2.   


    jb2.add(jl3);
    jb2.add(jpf);
    jp2.add(jl4);
    标红的,改为:
    jp2.add(jl3);
    jp2.add(jpf);
    jp2.add(jl4);
    PS:这代码可读性不是一般的差
      

  3.   

    jb2.add(jl3);
    jb2.add(jpf);
    改为jp2.add(jl3);
    jp2.add(jpf);