界面设计第一课

构造函数

格式
访问修饰符 构造函数名(参数列表){
//方法体
}
注意: 一个类中会有一个默认的无参构造 当定义了一个有参构造 则默认的无参构造调用时会
出现异常
解决:在类中重写一遍无参构造

用途
1 为属性赋值
2 实例化对象
格式:
类名 对象名 = new 构造函数名(参数值列表)---这里的参数值列表即为要为属性赋的值
与普通方法的区别
1 构造函数的用途是实例化对象 而普通的方法是来实现对象的功能或行为。
2 构造函数无返回值 而普通函数必须要有
3 构造函数的名字必须与类名一致 而普通函数则随便
4 构造函数每调用一次就实例化一个对象 而普通函数只执行一次


方法重载
条件:
方法的名字 返回值 访问修饰符等都要相同仅参数列表中参数的个数和数据类型可以不同
对应位置上的变化 也是可以的
注意 :
在使用时就根据 重载的方法的参数列表是不同的来判断是哪个方法

this关键字
表示当前对象
一般用法是 this.属性名=属性名;表示当前对象的属性
这种情况一般是在 传递的形参名和属性名一致 为了不混淆而采用this.属性名来表示当前对象的属性名


值传递与引用传递
从字面意思很好理解 值传递就是传递的"值" 而引用传递是传递的什么?
值传递是指针对 8和数据类型和String来讲的 传递的是变量复制了一份的值 接收变量的改变不影响传递变量的值
引用传递 是针对引用数据类型来讲 传递的是对象 是将对象名所指向的保存属性和方法的地址 复制一份 传递给形参
接收对象与传递变量指向同一个地址 接收变量改变 则传递变量中的属性和方法发生同样变化

swing
一组图形界面类 awt也是一组图形界面类 swing在任何平台上表现的方式相同
包括容器和组件
容器 可以在上面加载东西的对象
JFrame 窗体
JPanel 面板
JMenubar 菜单栏

独立组件 不可以在上面加载东西的对象

JLabel 标签 JTextField 文本输入框
JPasswordField 密码输入框
JComoBox 下拉框表 注意下拉框表赋的是一个数组
JCheckBox 复选框
JButton 按钮

布局
布局类主要位于java.awt包和java.swing包下以Layout结尾的类
一般使用 FlowLayout;



实现登陆界面
首先要定义一个登陆界面类
然后再写一个主函界数 在主函数中实例化一个登陆界面对象 然后调用显示面方法
显示界面的方法
首先实例化一个窗体对象再设置其属性 然后加载各种独立组件任务:
1.实现登录界面
2.再第二节课的基础上添加上构造函数,重载,this,值和引用传递的使用。(重新写)
3.总结:构造函数,重载,this,值和引用传递和swing的概念或介绍。
4.实现一个计算器界面。

1.实现登陆界面
首先要明确实现一个登录界面必须要创建一个类一个主函数一个实现方法
具体的方法是首先必须先实例化一个窗体对象设置其名字,大小,居中显示,
关闭窗口时程序退出,以及其布局
然后再实例化一个“账号”标签加到窗体上,实例化一个文本输入框加到窗体上,
接着实例化一个“密码”标签加到窗体上,实例化一个密码输入框加到窗体上,
依次实例化 下拉框表,复选框,按钮等对象加到窗体上。同时注意下拉框表实例化时参数值列表
是一个数组在此以前要定义一个该下拉框表中应该包括的数据的数组。
最后设置加到窗体上的所有对象是见得


package net.java.t070801;

/**
* 登录界面类
*
* @author 汤剑男
*/
public class Record {
/**
* 主函数
*/

public static void main(String[] args) {
// 实例化一Record的对象
Record qq = new Record();
qq.disPlay();
}

/**
* 定义一个显示界面的方法
*/
public void disPlay() {
// 实例化一个JFrame的对象
javax.swing.JFrame a = new javax.swing.JFrame("QQ2011");
a.setSize(300, 200); // 设置窗体的大小为宽度是300高度是200
a.setResizable(false); // 设置窗体不可变小
a.setLocationRelativeTo(null); // 设置窗体居中显示
a.setDefaultCloseOperation(3); // 关闭窗口即退出程序
java.awt.FlowLayout b = new java.awt.FlowLayout();// 设置一个窗体的布局为流量布局变量
a.setLayout(b);
javax.swing.JLabel c = new javax.swing.JLabel("账号:");// 设置一个账号标签
a.add(c);
javax.swing.JTextField d = new javax.swing.JTextField(20);// 设置一个账号输入框
a.add(d);
javax.swing.JLabel e = new javax.swing.JLabel("密码:");// 设置一个密码标签
a.add(e);
javax.swing.JTextField f = new javax.swing.JTextField(20);// 设置一个密码输入框
a.add(f);
javax.swing.JLabel g = new javax.swing.JLabel("状态:");// 设置一个状态标签
a.add(g);
String[] items = { "我在线上", "Q我吧", "离开", "忙碌", "请勿打扰", "隐身" };
javax.swing.JComboBox h = new javax.swing.JComboBox(items);// 设置一个下拉框表
a.add(h);
javax.swing.JCheckBox i = new javax.swing.JCheckBox("记住密码");// 设置一个记住密码的复选框
a.add(i);
javax.swing.JCheckBox j = new javax.swing.JCheckBox("自动登录");// 设置一个自动登录的复选框
a.add(j);
javax.swing.JButton k = new javax.swing.JButton("设置");// 设置一个设置的按钮
a.add(k);
javax.swing.JButton l = new javax.swing.JButton("登录");// 设置一个登录的按钮
a.add(l);
a.setVisible(true); // 设置窗体可见
}
}



2.
再第二节课的基础上添加上构造函数,重载,this,值和引用传递的使用。(重新写)
首先明确一个人阅读书这个程序必须包括三个类 分别是people类book类和main类
依次介绍这三个类的功能;
首先对于people类要明确其中必须要设置people的属性名字和工资
然后要使用到构造方法来为属性赋值,同时当属性名和形参名相同时为了区别传递的过来的属性值和当前值,
在构造方法中要有this.()属性名=属性名这样的方法体。
接下来还要创建一个read的方法同时使用引用传递即其形参列表为book类的对象
最后注意要重载一个read类,注意使2个read方法的输出值不同,好明确究竟是调用了那个read。
对于book类 首先必须设置其名字属性,然后建立一个构造方法完成属性的赋值,最后还要注意
因为其属性是封装的但是在people类中要使用其name属性所有还要有个get函数 返回对象的属性
使其可以在外部类调用仍可以用getName()输出其属性。
对于main类主要是完成people和book类对象的实例化,然后完成对read方法的调用 完成目的

package net.java.t070801;
/**
* 实现人类
* @author 汤剑男
*/
public class People {

private String name;//名字属性
private int salary;//工资属性

//构造方法(值传递)
public People(String name,int salary ){
this.name=name;
this.salary=salary;
}
//自定义一个阅读方法 参数为引用类型
public void read(Book b1) {
// 输出信息
System.out.println(this.name+"正在看"+b1.getName()+"工资现在是"+(this.salary+100));
}
//阅读方法的重载
public void read() {
// 输出信息
System.out.println(this.name+"正在看书"+"工资现在是"+(this.salary+50));
}

}



package net.java.t070801;
/**
* 创建一个Book类
* @author 汤剑男
*
*/
public class Book {

private String name;//设置名字的属性
//构造函数(值传递)
public Book (String name){
this.name=name;
}
//设置一个get函数返回name值
public String getName(){
return this.name;
}
}



package net.java.t070801;
/**
* @author 汤剑男
*/
public class Main {

//主函数
public static void main(String[] args) {
//实例化一个Book对象传递值
Book b = new Book("java");
//实例化一个People对象
People p=new People("张三",2000);
//调用带参数的read方法传递对象b
p.read(b);
//调用不带参数的read方法
p.read();
}

}


4.实现一个计算器界面。
一个计算器界面主要有四种对象形成为别是窗体对象 标签对象 文本输入框对象 还要按钮对象
而编写一个计算器界面还必须有3个块 分别是类 主函数 实现函数
四种对象都存在在实现函数中
首先实例化一个窗体对象 设置其名字 大小 关闭时退出程序 居中显示 布局
然后给窗体加上各种独立组件
同时要注意加载组件时要考虑其位置 大小 否则 编写出的界面会很不符合意愿

package net.java.t070801;

/**定义一个Counter类
* @author 汤剑男
*/
public class Counter {
// 主函数
public static void main(String[] args) {
//实例化一个对象
Counter jf = new Counter();
jf.display();
}
//定义一个显示方法
public void display(){
javax.swing.JFrame a = new javax.swing.JFrame("计算器");
a.setSize(400,520);
a.setResizable(false);
a.setLocationRelativeTo(null);
a.setDefaultCloseOperation(2);
//java.awt.FlowLayout b =new java.awt.FlowLayout();
a.setLayout(null);
javax.swing.JLabel c = new javax.swing.JLabel("查看(V)");
c.setBounds(20, 0, 60, 30);
a.add(c);
javax.swing.JLabel d = new javax.swing.JLabel("编辑(E)");
d.setBounds(150, 0, 60, 30);
a.add(d);
javax.swing.JLabel e = new javax.swing.JLabel("帮助(H)");
e.setBounds(320, 0, 60, 30);
a.add(e);
javax.swing.JTextField f = new javax.swing.JTextField(20);
f.setBounds(20, 40, 360, 80);
a.add(f);
javax.swing.JButton g =new javax.swing.JButton("MC");
g.setBounds(10, 140, 60,40);
a.add(g);
javax.swing.JButton h =new javax.swing.JButton("MR");
h.setBounds(90, 140, 60, 40);
a.add(h);
javax.swing.JButton i =new javax.swing.JButton("MS");
i.setBounds(170, 140, 60, 40);
a.add(i);
javax.swing.JButton j =new javax.swing.JButton("M+");
j.setBounds(250, 140, 60, 40);
a.add(j);
javax.swing.JButton k =new javax.swing.JButton("M-");
k.setBounds(330, 140, 60, 40);
a.add(k);
javax.swing.JButton g1 =new javax.swing.JButton("<—");
g1.setBounds(10, 200, 60, 40);
a.add(g1);
javax.swing.JButton h1 =new javax.swing.JButton("CE");
h1.setBounds(90, 200, 60, 40);
a.add(h1);
javax.swing.JButton i1=new javax.swing.JButton("C");
i1.setBounds(170, 200, 60, 40);
a.add(i1);
javax.swing.JButton j1 =new javax.swing.JButton("±");
j1.setBounds(250, 200, 60, 40);
a.add(j1);
javax.swing.JButton k1=new javax.swing.JButton("√");
k1.setBounds(330, 200, 60, 40);
a.add(k1);
javax.swing.JButton g2 =new javax.swing.JButton("7");
g2.setBounds(10, 260, 60, 40);
a.add(g2);
javax.swing.JButton h2 =new javax.swing.JButton("8");
h2.setBounds(90, 260, 60, 40);
a.add(h2);
javax.swing.JButton i2=new javax.swing.JButton("9");
i2.setBounds(170, 260, 60, 40);
a.add(i2);
javax.swing.JButton j2 =new javax.swing.JButton("/");
j2.setBounds(250, 260, 60, 40);
a.add(j2);
javax.swing.JButton k2=new javax.swing.JButton("%");
k2.setBounds(330, 260, 60, 40);
a.add(k2);
javax.swing.JButton g3 =new javax.swing.JButton("4");
g3.setBounds(10, 320, 60, 40);
a.add(g3);
javax.swing.JButton h3 =new javax.swing.JButton("5");
h3.setBounds(90, 320, 60, 40);
a.add(h3);
javax.swing.JButton i3=new javax.swing.JButton("6");
i3.setBounds(170, 320, 60, 40);
a.add(i3);
javax.swing.JButton j3 =new javax.swing.JButton("*");
j3.setBounds(250, 320, 60, 40);
a.add(j3);
javax.swing.JButton k3=new javax.swing.JButton("1/x");
k3.setBounds(330, 320, 60, 40);
a.add(k3);
javax.swing.JButton g4 =new javax.swing.JButton("1");
g4.setBounds(10, 380, 60, 40);
a.add(g4);
javax.swing.JButton h4 =new javax.swing.JButton("2");
h4.setBounds(90, 380, 60, 40);
a.add(h4);
javax.swing.JButton i4 =new javax.swing.JButton("3");
i4.setBounds(170, 380, 60, 40);
a.add(i4);
javax.swing.JButton j4 =new javax.swing.JButton("-");
j4.setBounds(250, 380, 60, 40);
a.add(j4);
javax.swing.JButton k4 =new javax.swing.JButton("=");
k4.setBounds(330, 380, 60, 100);
a.add(k4);
javax.swing.JButton g5 =new javax.swing.JButton("0");
g5.setBounds(10, 440, 140, 40);
a.add(g5);
javax.swing.JButton h5 =new javax.swing.JButton(".");
h5.setBounds(170, 440, 60, 40);
a.add(h5);
javax.swing.JButton i5 =new javax.swing.JButton("+");
i5.setBounds(250, 440, 60, 40);
a.add(i5);
a.setVisible(true);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值