Java初学
初学要点记录
类
类:结构体的升级版
结构体是一种构造数据类型,可以包含不同的成员,每个成员的数据类型可以不一样;可以通过结构体来定义结构体变量,每个变量拥有相同的性质
类的成员不但可以是变量----对象,还可以是函数(方法)
构造方法
通过关键字new来完成内存空间的分配,类只起到说明作用,不占用空间
在一个类,没有定义构造方法,默认隐式声明一个无参数的构造方法。创建对象new的后面调用的就是构造方法
Student stu = new Student()
public class Student{
public Student(){
}
}
构造方法与一般方法的区别
- 构造方法的名字必须与类名一样
- 构造方法不用声明返回值类型,但一定有返回值,返回值的类型就是方法名(构造方法的名字是类名,一个数据类型)
方法的重载
方法重载:
在一个类中可以定义多个方法名相同,但是参数个数、类型或顺序不一样的方法
优点:
调用时根据实际情况灵活选择
public calss Student{
//无参
public Student(){
}
//传入名字参数,初始化name属性值
public Student(String name){
this.name=name;
}
}
注:如果重载了构造方法,则默认的构造方法失效,如果还想使用默认的构造方法,必须要显示声明
Swing界面开发
package com.lyq0925.UI;
import java.awt.Dimension; // 尺寸类
import java.awt.FlowLayout; // 布局
import javax.swing.ImageIcon;//图片
import javax.swing.JButton; //按钮
import javax.swing.JFrame; //窗体
import javax.swing.JLabel; //标签
import javax.swing.JPasswordField;//输入框-密码
import javax.swing.JTextField;//输入框-文本
public class DrawUI {
//程序入口
public static void main(String[] args)
{
DrawUI draw = new DrawUI();
draw.showUI();
}
public void showUI()
{
// 步骤:
// 1、创建一个窗体
JFrame jf = new JFrame();
// 2、设置窗体的属性
// 标题
jf.setTitle("标题");
// 尺寸
jf.setSize(300,500);
// 关闭,否则就是一个假的关闭
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 3、设置布局 - 流式布局
FlowLayout fl = new FlowLayout();
jf.setLayout(fl);
// 4、添加组件
// 1、创建组件对象
//按钮
JButton button1 = new JButton("登录");
//输入文本框
JPasswordField password = new JPasswordField();
JTextField text = new JTextField();
//图片
ImageIcon image = new ImageIcon ("img/img0.jpeg");
//标签
JLabel img = new JLabel(image);
JLabel text1 = new JLabel("账号:");
JLabel text2 = new JLabel("密码:");
// 2、设置组件对象的属性
Dimension dim = new Dimension(200,10);
Dimension dim1 = new Dimension(100,100);
img.setPreferredSize(dim1);
password.setPreferredSize(dim);
text.setPreferredSize(dim);
// 3、添加到窗体上
jf.add(img);
jf.add(text1);
jf.add(text);
jf.add(text2);
jf.add(password);
jf.add(button1);
// 可视化 // 需要放在组件之后
jf.setVisible(true);
}
}
类的继承
注:子类特有的方法一定是子类类型的对象才能调用,转成父类类型后不能调用
多态
由于继承与重写相同类型对象调用相同方法,结果可能不同(方法重写)
接口
前面的界面按钮点击是没有反应的,要想要按钮响应点击,加入动作监听器
事件: 按钮被点击
ActionEvent 动作事件
监听: 由监听机制 监听按钮是否被点击
ActionListener 动作监听器(按钮 菜单 … )
JButton.addActionListener(ActionListener l)方法可以添加监听
参数类型ActionListener是系统的一个接口类,不可以创建对象,所以我们需要自己写一个类实现此接口(接口方法没有方法体,需要重写)
使用接口的方法---------实现 :implements
格式: public class 类名 implements 接口名{ }
1、必须要实现接口中所有的抽象方法为实体方法
2、可以直接使用接口中的常量
3、这个类的对象可以自动将类型转为接口类型
UIListener.java
package com.lyq0925.UI;
// 实现 implements
// 格式: public class 类名 implements 接口名{ }
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class UIListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("点击")
}
}
DrawUI.java 中加入
UIListener ls = new UIListener();
button.addActionListener(ls);
这样监听器就完成了,我们可以使用监听器判断账号密码是否输入正确
UIListener.java 中加入
package com.lyq0925.UI;
// 实现 implements
// 格式: public class 类名 implements 接口名{ }
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class UIListener implements ActionListener {
JTextField namein = null;//先建立一个空的对象,在UIDraw中创建UIListener对象,获取UIDraw输入框中的值
JTextField password = null;
@Override
public void actionPerformed(ActionEvent e) {
String nametext = namein.getText(); //getText() 获取值
String passwordtext = password.getText();
if(nametext.equals("小明")&&passwordtext.equals("123456")) {
System.out.println("账号正确");
}
//使用JOptionPane类,来实现弹出一个窗口
else if(nametext.equals("")||passwordtext.equals("")) {
JOptionPane.showMessageDialog(null, "信息不完整", "错误", JOptionPane.ERROR_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null, "账号密码错误", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}