First_Week
day02
1.添加点击事件
jb41.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Search().addfriends();
//jf.dispose();
}
});
// 给按钮jb41添加点击事件
// new Search().addfriends();跳转到该界面
jp31.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
new Communicate().init();
}
});
// 添加鼠标点击事件的时候,需要使用MouseListener(),但是他需要实现很多的方法,所以使用匿名内部类的方式来实现,使用适配器的方式。继承MouseListener()类。只需要实现需要实现的方法即可。
2.添加图片
jb11.setIcon(new ImageIcon("img\\headerme.png"));
//使用的容器是JLabel
父元素设置了绝对布局,子元素也必须要有绝对布局
3.关于JTable的使用
private JTable jt;
private JScrollPane jsp;
jt = new JTable(rows,header);
jsp = new JScrollPane(jt);
// 使用JTable时候,必须将jt加到JScrollPane中去,否则没有表头。
day03
一、数据库的相关知识
二、多线程编程知识
1.单线程通信
Client
public static void main(String[] args) throws IOException {
// 连接服务器
Socket s = new Socket("192.168.45.29",8888);
// 输出流
OutputStream o = s.getOutputStream();
PrintStream ps = new PrintStream(o);
// 输入流,InputStreamReader(System.in)用来不断的读取键盘输入的信息
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while( (line = br.readLine()) != null ){
// 将从键盘接受到的信息,发送给服务器
ps.println(line);
// 刷新缓存
ps.flush();
}
}
Server
public static void main(String[] args) throws IOException {
// 启动一个端口
ServerSocket ss = new ServerSocket(8888);
// 用来接受来自客户端的请求
Socket s = ss.accept();
String line = null;
// 读取来自客户端的消息
BufferedReader bd = new BufferedReader(new InputStreamReader(s.getInputStream()));
while( (line = bd.readLine()) != null){
// 打印并输出来
System.out.println(line);
}
}
2.多线程通信
Client
public class Client {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Socket s = new Socket("localhost",8888);
ClientThread clientThread = new ClientThread(s);
// 在输入之前首先启动一个线程
clientThread.start();
// 输出信息的流--- 即要给服务器发送消息是使用的流
OutputStream o = s.getOutputStream();
PrintStream ps = new PrintStream(o);
*** 特别注意****
在不断的接收键盘输入之前,必须先启动一个线程,否则就会被阻塞到键盘的输入那里
// 不断的读取键盘的输入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while( (line = br.readLine()) != null ){
// 将从键盘输入接收到的信息发送到服务器端
ps.println(line);
ps.flush();
}
}
}
// 定义一个客户端的类,是这个类继承线程
class ClientThread extends Thread{
private Socket socket;
// 通过构造方法来通知客户端连接了那个服务器
public ClientThread(Socket socket){
this.socket = socket;
}
// 重写run方法
@Override
public void run() {
try {
String line = null;
// 不断的接收服务器发送过来的信息
BufferedReader bd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while( (line = bd.readLine()) != null ){
// 把从服务器接收到的信息,打印出来
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Server
public class Server {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(8888);
// 使用循环来不断的接收客户端发来的请求,并且连接通
while(true){
Socket s = ss.accept();
ReadThred thred = new ReadThred(s);
thred.start();
}
}
}
class ReadThred extends Thread{
private Socket socket;
// 通过构造方法来通知服务器
public ReadThred(Socket socket){
this.socket = socket;
}
@Override
public void run() {
String line = null;
try {
// 发送信息到服务器
OutputStream o = socket.getOutputStream();
PrintStream ps = new PrintStream(o);
// 接收来自客户端的消息
BufferedReader bd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while( (line = bd.readLine()) != null){
// 将接收到的信息添加hello以后写给客户端
ps.println("hello"+line);
// 输出来自客户端的消息
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.线程知识
3.1什么是线程
线程是程序的一条执行线索,执行路径,是程序使用cpu的最小单位。线程本身不能运行,它只能运行在程序中,线程是依赖于程序存在的。
3.2实现方式
class ClientThread extends Thread // 继承Thread
class ClientThread implements Runable // 实现Runable接口
Thread类实现了Runable这个接口
class Thread implements Runnable
day04
1.ArrayList集合
Set集合、Map类似
1.添加
arrs.add("lisi");// 追加
arrs.add(0, "张三");// 插入
2.删除
arrs.remove(0);
arrs.remove("lisi");
3.修改
arrs.set(0, "王五");
4.查询
4.1 普通for循环
for (int i = 0; i < arrs.size(); i++) {
System.out.println(arrs.get(i)+"-----");
}
4.2 foreach循环
for (String string : arrs) {
System.out.println(string+"======");
}
4.3 Iteator
Iterator<String> iterator = arrs.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
2.HashMap的使用
HashMap<String,Integer> maps = new HashMap<String,Integer>();
// 遍历所有条目
// 一
Set<String> keySet = maps.keySet();
for (String string : keySet) {
System.out.println(string+"\t"+maps.get(string));
}
// 二
Set<Entry<String,Integer>> entrySet = maps.entrySet();
Iterator<Entry<String, Integer>> iterator = entrySet.iterator();
System.out.println("----------------------");
while(iterator.hasNext()){
Entry<String, Integer> next = iterator.next();
System.out.println(next.getKey()+"\t"+next.getValue());
}
day05
有关序列化:对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化
public class Member implements Serializable{}
1.Model的建立一般规则
一般来说,需要建立是三个构造方法:一个是空构造方法,一个是全参的构造方法,一个不包含id的构造方法
// 空的构造方法
public Member() {
super();
}
// 没有id的构造方法
public Member(String name, String nickname, String signature,
String password, String header) {
super();
this.name = name;
this.nickname = nickname;
this.signature = signature;
this.password = password;
this.header = header;
}
// 所有参数的构造方法
public Member(int id, String name, String nickname, String signature,
String password, String header) {
super();
this.id = id;
this.name = name;
this.nickname = nickname;
this.signature = signature;
this.password = password;
this.header = header;
}
day06
项目架构
层次划分 | 作用 |
---|---|
service:业务逻辑层 | UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等 |
dao:数据访问层 | 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。 |
model(po):模型层(界面层) | 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。 |
异常处理(一)
空指针异常:
一般都是“.”之前的变量未定义,
比如:memberService.isExist(member.getName()) 这一行代码报异常,可能就是memberService没有定义。
IMemberService memberService = null;只有初始化了才可以使用。
问题一:对于类变量的使用,结果在刚开始启动个线程,将登录界面存储,再次调用的时候,会出现空指针异常,这里的话,就不可以在注册成功以后直接调用。
// 将用户名设置到登录界面的框内
JFrameUtils.loginui.getJtd().setText(strs[2]);
new LoginUI().init();(正确)
JFrameUtils.loginui.init();(错误)
// 定义的工具类
public class JFrameUtils {
public static LoginUI loginui;
public static RegisterUI registerui;
public static MainUI mainui;
}