java只能对按钮监听吗_java学习

java学习笔记@TOC

第一天(java初学)

面向对象

java是一个以面向对象编程为目的而开发的语言,以C++为基础,摒弃了C++中许多繁琐的操作,并按照面向对象的思想在底层进行优化。

java的类大致与C++相同,不同的是java文件以类为主体,编译链接时也可能以类为基础。

类的编写:

public class 类名{}

这里的public同样是访问修饰符,只不过一般写public,其他的基本没有意义。

1、类需要写在同名.java后缀的文件中 – 主类

2、类名遵循驼峰命名法 (首字母大写,其后的每个单词首字母大写)

3、变量名 方法名(小驼峰命名法 首字母小写,其后的每个单词首字母大写) 常量名(意思完全 全大写)

类中包含属性(数据)和方法(函数)。每个属性和数据都需要单独的访问修饰符,不写的话为默认。

java中主函数写在类内

public static void main(String[] args) {

}

继承

继承: extends

子类继承父类 (SuperClass)

public class 子类 extend 父类{}

子类拥有父类所有属性和方法(但不一定可用)

子类以及子类对象可以调用父类哪些属性和方法?(可访问的)

访问修饰符:

公共的 可以

受保护的 不一定(相同包内可以)

私有的 不可以

默认的 不一定 包范围内

作用域:

项目空间: 公共的

包空间:默认的 受保护的

文件空间:

主类空间:私有的

protected访问类型:

子类内部使用,可以访问。

父类定义,子类为空:

子类创建于本包,父类也包含在本包中,可以访问

子类创建于本包,父类不包含在本包中,不可访问

子类创建于非本包,父类包含在本包,可以访问

子类创建于非本包,父类不包含在本包,不可访问

总结:父类protected,只跟父类是否跟子类处于同一包有关。子类创建时,protected被限定为子类定义包的范围。

父类定义,子类中使用public重写:

都访问为子类重写内容

总结:处于同包时,子类重写父类,处于不同类时编译器将直接找到子类的public定义。

父类定义,子类使用protected重写:

子类创建于本包,父类也包含在本包中,可以访问

子类创建于本包,父类不包含在本包中,可以访问

子类创建于非本包,父类包含在本包,不可访问

子类创建于非本包,父类不包含在本包,不可访问

总结:编译器首先在子类创建时,无法访问其他包内的子类protected定义,父类在本包内时定义被子类重写,父类不在本包内时接访问子类。

自动转型:

前提: 有继承关系的存在

子类对象可自动转型为父类类型

父类 转型子类对象 = new 子类名();

子类对象转型之后,编译器会根据子类对象前声明的类型去code中查找有哪些属性和方法,即可调用。(不同于C++)

子类跟父类:构造方法顺序:

无参数(同C++一样,先进行父类构造方法,再进行子类方法)

父类-》子类

//隐式的自动调用父类方法

父类有参数

需要定义在子类构造方法内第一句加上super(*)来调用父类方法。

父类无参数

编译器自动在子类构造方法第一句加上了super(),也可以自己手动加上。

第二天

界面

界面开发:

可视化组件:

容器: 可以加载其他组件的容器 — 窗体

组件: 按钮 输入框 菜单 …

规则元素化:

颜色 尺寸 字体

工具类型: 布局 图形类 …

1、java.awt 早期的界面开发包 保留使用元素类型

2、javax.swing 升级之后的开发包 主要升级了视图部分

JFrame 最基础的界面类

setDefaultCloseOperation 设置退出方式

setVisible设置是否可见

FlowLayout 流式布局

jFrame.setLayout 将布局添加进界面

JLabel 标签组件

JTextField 文本框

JButton 按钮

Dimension 尺寸属性

第三天

监听

事件监听:

目标: 点击按钮 弹出一个窗体

监听器:

动作监听器 :java.awt.event.ActionListener

接口:interface 只有方法 (没有具体实现)

– 在动作监听器中,点击按钮之后会调用接口内方法

步骤:

1、将监听器接口接在一个我们自己写的类上

类实现接口

格式:

public class 类名LoginListener implements ActionListener {

2、将接口中所有的方法 覆写 改分号为大括号

public void actionPerformed(ActionEvent e){

3、点击按钮之后来调用的执行的代码

// 弹出窗口 验证密码 判断按钮

}

}

界面类中

将监听器类与需要监听的组件关联

LoginListener loginl = new LoginListener();

btn.addActionListener(loginl);

实现了监听器接口的类 的对象

事件类:

动作事件类: ActionEvent

事件发生时,会将组件以及事件的信息打包传入监听响应方法中

查阅java文档,新建监听类,打印event内信息

System.out.println(“ACTION_FIRST:”+e.ACTION_FIRST);

System.out.println(“ACTION_LAST :”+e.ACTION_LAST);

System.out.println(“ACTION_PERFORMED :”+e.ACTION_PERFORMED);

System.out.println(“ALT_MASK :”+e.ALT_MASK);

System.out.println(“CTRL_MASK :”+e.CTRL_MASK);

System.out.println(“META_MASK :”+e.META_MASK);

System.out.println(“SHIFT_MASK :”+e.SHIFT_MASK);

System.out.println(“getActionCommand() :”+e.getActionCommand());

System.out.println(“getModifiers():”+e.getModifiers());

System.out.println(“getWhen() :”+e.getWhen());

System.out.println(“paramString() :”+e.paramString());

System.out.println("–getSource():"+e.getSource());

在按钮监听类内,进行判断函数,并执行动作。然而执行动作时需要访问界面类p的属性,界面类被定义在main函数中,无法访问。

解决办法:在监听类内定义界面类,在界面类内将this引用传入监听类,即可完成访问。

第四天

String数据格式

查阅java包,发现String跟基础类型一起定义在long中,然而String类中最为核心的数据为 Value 是final 的char,一旦被定义,char是不可变的。

当尝试给一个已经定义了的String赋值时,将会直接生成一个新的String,使用hashCode方法可以发现该对象的hash已经改变,在内存中的地址改变。

鼠标事件

任务:制作绘图板,能够绘制直线

鼠标监听器也是一种接口 interface

接口的定义:

1、属性全是默认为静态常量

2、只能写抽象方法

为什么接口不能创建对象?(接口是抽象类型)

但是接口可以作为一种类型来声明

使用接口(监听器):

1、创建一个类实现这个接口 (implements )

2、在这个类中重写接口中所有的抽象方法

抽象类的使用也是如此

1、在这个类中可以直接使用接口中的常量

2、这个类的对象,可自动转型为接口类型

练习:

implements 与 extends的区别 接口 VS 抽象类

继承: 单继承 一个类只能继承一个类

接口: 多实现,一个类可以实现多个接口

接口和抽象类都需要被别的类继承,自己无法创建对象。但一个类可以继承多个接口,只能继承一个抽象类

final: java关键字保留字 最终形态 定义之后不能改变

定义常量: 全部大写 并且尽可能详细

static : 静态的 唯一性

类名直接调用 ,属于类,不属于对象

画图板:

绘制一条直线

界面: JFrame

监听器: MouseListener 鼠标监听器 监听可视化组件 – 窗体对象

事件类: MouseEvent 鼠标事件 – 获取坐标

绘制图形类:

Graphics 图形 – 画笔

获取方式:

不能创建对象

从可视化组件上获取

在可视化之后 获取

Graphics g = jf.getGraphics();

g.drawLine(x1,y1,x2,y2);

JPanel jp =new JPanel();// 面板

面板用来盛放其他组件

本文地址:https://blog.csdn.net/z970984993/article/details/111567607

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值