Java学习进程2
图形化编程和监听器的使用
图形化编程:设计带操作界面的应用程序 java.awt,java.swing
标准库:当前这门语言设计好的基础功能
组件(登录界面):账号/密码输入框 登录、注册按钮 窗体 图片
查看源代码:ctrl+点击鼠标左键
数据类型
1.基本类型(8个):整型(byte/short/int/long) 浮点型(float/double) 字符型(char) 布尔型(boolean)
2.引用类型/自定义类型:类(class) 接口(interface) 数组
3.查看返回值类型的方法:创建对象时,new前面的类名,就是这个对象的数据类型。
监听器:设计界面程序的交互功能(监听发生什么动作)
1.事件源:当前动作所发生的组件(swing)
2.监听器:动作监听器方法:addActionListener()
3.绑定事件处理类
接口
1.接口是一种特殊的继承(类),定义的都是抽象方法,有方法名没有方法体
2.接口中的常量即为特殊的变量,只能写public
3.接口的书写格式:
publicclass子类implements接口,接口,,{}注:接口不能创建对象,要重新定义类实现接口,重写接口中的所有抽象方法
example
完成登录界面,账号密码同时验证,验证后显示登陆成功或失败的新界面
Login类
packagecom.yw.oop0501;//若只有一个写成import javax.swing.JFrameimportjavax.swing.*;importjava.awt.*;/** * @author YAN * @date 2026/5/1 21:26 * @description */publicclassLogin{//属性(变量)//方法(函数):显示登录界面的方法publicvoidshowUI(){//窗体JFramejf=newJFrame();//像素点 > 分辨率jf.setSize(420,500);jf.setTitle("登录界面");jf.setLocationRelativeTo(null);//居中显示jf.setDefaultCloseOperation(3);//退出进程//流式布局管理器:控制位置以及大小FlowLayoutflow=newFlowLayout();jf.setLayout(flow);//设置窗体为流式布局//加载图片//ImageIcon image = new ImageIcon("D:\\PHOTO\\微信图片_20260501213802_35_1.jpg");//按比例缩放,适配标签大小ImageIconoriginalIcon=newImageIcon("D:\\PHOTO\\微信图片_20260501213802_35_1.jpg");ImagescaledImage=originalIcon.getImage().getScaledInstance(360,150,Image.SCALE_SMOOTH);ImageIconscaledIcon=newImageIcon(scaledImage);//标签//JLabel jla = new JLabel(image);JLabeljla=newJLabel(scaledIcon);jla.setPreferredSize(newDimension(360,150));jf.add(jla);//提示信息JLabeluser=newJLabel("账号:");jf.add(user);//账号框(文本框)//对象的数据类型就是前面的类名JTextFieldjtf=newJTextField();//除了JFrame,其他组件设置大小都是该方法Dimensiondm=newDimension(340,30);jtf.setPreferredSize(dm);jf.add(jtf);//密码框JLabeluser1=newJLabel("密码:");jf.add(user1);JTextFieldjtf1=newJTextField();Dimensiondm1=newDimension(340,30);jtf1.setPreferredSize(dm1);jf.add(jtf1);//按钮JButtonjbu=newJButton("登录");jf.add(jbu);JButtonjbu1=newJButton("注册");jf.add(jbu1);//设置可见,所有的组件在可见之前添加jf.setVisible(true);//给登录按钮添加动作监听器方法//接口不能直接创建对象:重新定义类实现接口,重写接口中的抽象方法ButtonListenerlistener=newButtonListener();jbu.addActionListener(listener);//把jtf传递给listener对象listener.userText=jtf;//把user1传递给listener对象listener.userLabel=jtf1;//把登录窗口传给listener对象(要关闭旧窗口,开新窗口,必须传jf,若不需要关闭旧窗口,就不需要传jf)listener.loginFrame=jf;}//主函数publicstaticvoidmain(String[]args){//在主函数中,类里面的属性和方法必须通过对象调用Loginlo=newLogin();lo.showUI();}}ButtonListener类
packagecom.yw.oop0501;importjavax.swing.*;importjava.awt.event.*;//import java.awt.event.ActionEvent;//import java.awt.event.ActionListener;/** * @author YAN * @date 2026/5/6 23:35 * @description 事件处理类 */publicclassButtonListenerimplementsActionListener{//默认的注册账号,密码publicStringname="666";publicStringpassword="888";//引用传递(初始化属性)publicJTextFielduserText;//保存传递过来的账号框对象publicJTextFielduserLabel;//保存传递过来的密码框对象//接收登录窗口对象,用来关闭publicJFrameloginFrame;//重写接口中的抽象方法//事件处理方法publicvoidactionPerformed(ActionEvente){//获取输入账号,密码StringuserName=userText.getText();StringuserPass=userLabel.getText();//验证账号,密码//比较字符串内容是否一致必须用equals方法if(name.equals(userName)&&password.equals(userPass)){//关闭原登录窗口loginFrame.dispose();// System.out.println("yes");//显示登录成功的界面//新建登录成功界面JFramejfOK=newJFrame("登录界面");jfOK.setSize(420,500);jfOK.setLocationRelativeTo(null);//居中显示jfOK.setDefaultCloseOperation(3);//退出进程JLabellabOK=newJLabel("登录成功!");jfOK.add(labOK);//设置可见,所有的组件在可见之前添加jfOK.setVisible(true);}else{//System.out.println("no");JFramejfNO=newJFrame("登录界面");jfNO.setSize(420,500);jfNO.setLocationRelativeTo(null);//居中显示jfNO.setDefaultCloseOperation(3);//退出进程JLabellabNO=newJLabel("登录失败!");jfNO.add(labNO);//设置可见,所有的组件在可见之前添加jfNO.setVisible(true);}//System.out.println("点击按钮!userName = " + userName);//System.out.println(" userPass = " + userPass);}}