Java第二课:图形界面(实现QQ登陆界面)

最终效果图如下:
这里写图片描述

第一步:分析界面组成:根据三大布局的特点来确定由几大部分组成,哪些部分要用到JPanel.然后在窗体JFrame上用什么布局组合。
分析如下:
这里写图片描述

分为三大部分,如图三种不同彩色框(因为左边图案等于右边几行内容大小)。
分析各个部分如何实现:紫框:就是一张图片,用一个JLabel组件即可;红框:图片右靠上(流式布局的设置特点),用一个组件无法实现,要用到JPanel,用流式布局;黄框:也要用到一个JPanel和流式布局(根据组件大小,一行满了就换行)。三个部分放在窗体上用到北、西、中三个方位,很明显是边框布局。

第二步:开始编程:

(1)开头格式:

//1.新建Login类
public class Login {
    // 1.定义主函数
    public static void main(String[] args) {
        // 2.在主函数中实例化Login类的对象
        new Login();
    }

    // 1.构造方法
    public Login() {
        initUI();// 1.调用初始化界面的方法。
    }

    // 1.初始化界面的方法。
    public void initUI() {。。。。。。在这里编写界面}

(2)现在来写initUI方法

        //先实例化JFrame顶级容器组件类对象,设置组件的属性值:大小,标题,显示位置,关闭操作,布局,调整大小,可见
        JFrame w=new JFrame();
        w.setSize(430,330);
        w.setResizable(false);//禁止调整大小
        w.setUndecorated(true);//去掉自带的边框
        w.setLocationRelativeTo(null);//出现在电脑屏幕中央

        //再设组件:先设好组件,后面根据显示效果来在每个组件下面调整大小
        /*ImageIcon类:用来加载图片到程序中,图片文件最好放在与程序并列目录中,直接用下面方法调用*/
        ImageIcon pic1=new ImageIcon(this.getClass().getResource("pic1.png"));
        ImageIcon pic2=new ImageIcon(this.getClass().getResource("pic2.png"));
        /*JLabel标签元素组件类:显示文字或者图片*/
        JLabel ima1 = new JLabel(pic1);
        /*组件的设置大小:(除了JFrame用setSize,其余都用setPreferredSize包括JPanel),并且用到dimension封装类来实现*/
        ima1.setPreferredSize(new Dimension(300,180));
        JLabel ima2 = new JLabel(pic2);
        JLabel user=new JLabel("注册账号");
        user.setPreferredSize(new Dimension(80,25));
        JLabel password=new JLabel("找回密码");
        password.setPreferredSize(new Dimension(80,25));
        /*下拉框JComboBox:既可编辑文字,又可有选项直接选*/
        JComboBox txtUser=new JComboBox();
        txtUser.setEditable(true);
        txtUser.setPreferredSize(new Dimension(190,25));
        txtUser.addItem("1625002542");
        txtUser.addItem("2126341847");
        txtUser.addItem("3278523523");

        JPasswordField txtPass=new JPasswordField(17);
        JCheckBox cb1=new JCheckBox("记住密码");
        cb1.setPreferredSize(new Dimension(115,25));
        JCheckBox cb2=new JCheckBox("自动登录");
        cb2.setPreferredSize(new Dimension(150,25));
        JButton btLogin=new JButton("登录");
        btLogin.setPreferredSize(new Dimension(200,25));

        //然后设左面板
        JPanel leftPan=new JPanel();
        leftPan.setLayout(new FlowLayout(FlowLayout.RIGHT,10,10));//右对齐,组件垂直间隔10,水平间隔10
        leftPan.setPreferredSize(new Dimension(130,0));
        leftPan.add(ima2);

        //接着设右面板:
        /*组件的添加按照顺序来,先添加的先出现,流式布局的特点,
              通过调整组件大小来控制位置,放满本行就换到下一行*/
        JPanel rightPan=new JPanel();
        rightPan.setLayout(new FlowLayout(FlowLayout.LEFT,5,5));
        rightPan.add(txtUser);
        rightPan.add(user);
        rightPan.add(txtPass);
        rightPan.add(password);
        rightPan.add(cb1);
        rightPan.add(cb2);
        rightPan.add(btLogin);

        //最后把所有部分按照布局放到窗体中
        w.setLayout(new BorderLayout());
        w.add(ima1,BorderLayout.NORTH);
        w.add(leftPan,BorderLayout.WEST);
        w.add(rightPan,BorderLayout.CENTER);

        //全部搞好了最后再显示
        w.setVisible(true);
    }
}

小技巧:
1.选定类,按F3可以查看方法和源码,可以了解类的内在方便使用,和学习源代码
2.写完一小部分,就add到jframe中setVisible(true)看一下。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值