黑马程序员——第十五篇:线程池、单例设计模式、图形化界面、网络编程

来源:互联网 发布:nba球员名字大全及数据 编辑:程序博客网 时间:2024/05/17 21:57

  ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a

  href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1.线程池

 1:  Executors类创建线程池对象

 2:  ExecutorService 提交线程任务

 3:  Future 获取线程执行返回值

 4:  线程第三种实现方式

Callable接口,适用于线程池

 程序Demo1通过Executors类创建线程池对象(实现Runnable接口)

程序Demo2通过Executors类创建线程池对象(实现Callable接口)

程序Demo3Callable中的call方法实现1+100,1+200的和

2.单例设计模式

1:饿汉式程序Demo

 2:懒汉式程序Demo

3. Runtime

 java.lang.Runtime

该类是一个单例设计模式,让我们自己写的程序和系统连接。

 getRuntime()方法获取Runtime类对象,不允许自己创建Runtime类对象

 Process exec(String command) 在单独的进程中执行指定的字符串命令

 exec("") 执行系统命令,终止当前正在运行的 Java虚拟机

4. java.awt包和javax.swing

 里面的类,接口,为图形界面服务

 Aawt抽象窗口工具包,所有功能都必须依赖操作系统

 调用了操作系统底层功能,实现图形界面

 重量级组件

 

 Bjavax.swing基于awt的基础之上,Java语言自己编写的一套图形界面

   swing不依赖操作系统,轻量级组件

 

 C:区别:

awtWindows上效果,就会和Windows一样的,在Linux上运行,图形效果就和Linux一样

swingWindowsLinux上的效果是一样的

5.图形界面中继承关系

  Component 具有图形表示能力的对象

    |-- Container 图形界面对象,表示容器

      |-- Window  没有边界和菜单窗口

        |-- Frame 具有边界和菜单的窗口

         |-- Dialog 对话框

            |-- FileDialog 文件对话框

      |-- Panel   面板,局部容器

 

    |-- Button   按钮组件

    |-- Label    文本标签组件

    |-- checkbox 复选框

 

    |-- TextComponent 文本组件,用户可以编辑的对象

      |-- TextField   单行文本组件,不能换行

      |-- TextArea    多行文本组件

6. Frame

  功能:创建具有标题,边框,菜单的窗口

  A. 构造方法

    Frame(String title)传递字符串标题

    会显示在窗口最上面

  B. 窗口的设置方法

    void setVisible(boolean b) 父类中的方法

    true显示窗体,fasle隐藏窗体

    void setLocation(int x,int y)父类中的方法

    窗体定位坐标, x表示距离屏幕左侧的像素值

    void setSize(int width,int height)父类方法

    设置大小尺寸,宽度和高度,都是像素

    void setBounds(int x,int y,int w,int h)父类中的方法

    设置窗体的位置和大小

    void setBackground(Color c)父类中的方法,设置背景色

7.在窗体上添加按钮

  Button类:可以实现按钮组件

  构造方法:传递字符串标签,显示在按钮上面

  每个容器都有方法add,添加组件

  容器布局管理器

  每个窗体容器都有一个方法 setLayout,设置布局管理器

  frm.setLayout(new FlowLayout())   流式布局

  frm.setLayout(new BorderLayout()) 边界布局

  frm.setLayout(null)不使用布局管理器,绝对定位,组件可以随便放置

8.事件监听机制 (event listener)

 软件和用户交互的一个途径

 用户操作软件,软件必须有一个功能回馈

 

 A. 事件源

   事件源就是用户在操作的部分

   按钮,输入文本框,窗体 复选框

 B. 事件

   用户操作事件源的方式

    鼠标事件

       点击移入 离开

    键盘事件

       按下弹起

    窗体事件

       最大化,最小化,打开,关闭

 C.监听器

   理解为窃听器,装在一个隐蔽的地方

   随时工作中,只有声音,就会被监听器捕获,传送他的主人

   监听器:安装在事件源上,监听器的工作等待捕获用户对鼠标的操作

   只要有鼠标操作了,动作就会被监听器抓住,监听器就会根据用户的具体操作

   调用不同的处理方式

 D. 处理方式

   就是普通的方法而已

   方法我们自己不能调用,让监听器调用

   鼠标点击方法(){}

   鼠标移入方法(){}

9.窗体事件监听机制

 创建容器中的方法

    注册窗体事件监听器

    addWindowListener(WindowListener l)

    在事件源上,已经安装好监听器(窃听器)

    有窗体操作,就会被监听器抓住

 

    addWindowListener(WindowListener l的实现类对象)

    addWindowListener(new WindowListenerXXX())

    windowIconified(WindowEvent e)

    窗口从正常状态变为最小化状态时调用。

    实现类重写windowIconified方法,监听器捕捉到了用户最小化动作

    自动调用重写方法windowIconified

    图形界面中的事件监听器的书写模版

      事件源对象.addXXXListener(new XXXAdapter(){

          public void YYY方法(XXXEvent e){

           }      

      });

      按钮对象.addMouseListener(new MouseAdapter(){

         public void mouseClicked(MouseEvent e){

          }

      });

      frm.addWindowListener(new WindowAdapter(){

         public void windowClosing(WindowEvent e){

          }

      })

10.鼠标事件

 事件处理方法

  mouseClicked 鼠标点击后被监听器调用

  mouseEntered 鼠标点移入到组件后被监听器调用

  mouseExited  鼠标点离开组件后被监听器调用

 

  鼠标事件处理方法中有个参数,MouseEvent类的对象

  对象由监听器复杂传递

 

  MouseEvent方法 getClickCount()获取点击次数,实现鼠标双击效果

11. TextField

 表示可以编辑的单行文本框

 构造方法:TextField()

 String getText() 获取文本框内输入的文字

 void setText() 设置文本框的文字

12.键盘事件

 重写方法keyPressed(KeyEvent e){

    sop(e) 键盘按下的ASCII,按下字母

 }

 KeyEvent 定义了很多静态常量

 定义规则:

   键盘上键的名字变量名 =码值

 KeyEvent 类方法

   int getKeyCode() 获取键盘的码值

   char getKeyChar() 获取键盘的按下键的字符

 KeyEvent类的父类InputEvent,有个方法

 consume() 阻止输入

 KeyEvent类的父类InputEvent,有个方法

 boolean isControlDown() 判断按下的是不是Ctrl

 如果是返回true

13.图形化界面综合案例:

        需求:文本转移,在上面文本框单行输入,当按回车键或者点击按钮时文本转到多行文本框。

14. InetAddress

|-- static InetAddress getLocalHost()获取本机IP对象

|-- static InetAddress getByName(String ip)获取指定主机IP对象

|-- String getHostName()获取主机名

|-- String getHostAddress()获取主机IP地址

15.协议

 |-- UDP

  无连接

  不安全,不可靠

  限制64KB

  运行速度快

 

 |-- TCP

  面向连接

  三次握手确认连接

  运行速度慢

  安全可靠,大数据传输

16. Scoket服务机制

 表示IP+端口号,套接字

 通信双方都必须具有Socket服务

 数据是在两个Socket之间进行传输

 数据是在两个Socket之间使用IO流技术传输

 网络编程,不是在做网络,在建立好连接后,IO

17. UDP协议发送端

 java.net.DatagramPacket 数据包,打包也可以拆包

 java.net.DatagramSocket Socket服务机制发生数据包,接收数据包

 

 A. DatagramPacket发送,封装数据包

   构造方法:

   DatagramPacket(byte[] buf, int length, InetAddress address, int port)

                 字节数组发多长,  P地址对象,     端口号

 B.DatagramSocket 发送数据包

   构造方法:

    DatagramSocket()

   send(数据包对象)发送数据包

close()关闭资源

 程序Demo:使用UDP协议发送数据:

18. UDP接收端

   java.net.DatagramPacket 数据包,打包也可以拆包

   java.net.DatagramSocket Socket服务机制发生数据包,接收数据包

  A. DatagramSocket接收端

   构造方法:

     DatagramSocket(int 端口号)

   接收数据包方法

     receive(DatagramPacket dp)

  B.DatagramPacket 接收端拆包

   构造方法:

     DatagramPacket(byte[] buf, int length)

                  字节数组, 数组长度

   拆包方法:

     int getLength() 获取发送的数据包的长度

     int getPort()   获取发送方的端口号

     InetAddress getAddress() 获取发送方的IP地址对象

     InetAddress方法 getHostAddress()发送方IP

     广播地址:192.168.31.255

     只要IP192.168.31开头的,就都可以受到信息

 程序Demo:使用UDP协议接受数据

19. TCP通信

 客户端和服务器之间的数据交换

 客户端Socket对象,连接服务器

 服务器ServerSocket对象,接收客户端连接

 只要连接成功,连接道路,创建IO对象

 

 客户端输出数据到服务器 输出流 write

 服务器接收客户端的数据 输入流 read

 

 服务器数据回给客户端   输出流

 客户端接收服务器的数据 输入流

 

20. TCP客户端

 java.net.Socket 实现客户端套接字

 A. 构造方法:

     Socket(String host, int port)

           服务器IP地址,端口

 构造方法只要运行,连接服务器,如果没有服务器,直接抛异常

 

 B. OutputStream  getOutputStream()获取字节输出流

 作用:数组以字节形式,写到服务器

 

 C. InputStream getInputStream()获取字节输入流

 作用:读取服务器发回字节数组

21. TCP服务器端

 java.net.ServerSocket 实现服务器端套接字

  A. 构造方法:

    ServerSocket(int 端口)

  B. Socket accept()

    获取客户端的连接对象Socket

    使用客户端的连接对象Socket获取IO

 程序Demo:实现TCP服务器端

22. TCP图片上传案例

客户端:

 客户端,字节流读取图片,字节数组

 字节数组写到服务器端

 程序Demo

服务器端:

  读取客户端发来图片(字节数组)

 将图片写到自己的文件夹 d:\\upload

 将上传成功回写客户端

程序Demo

0 0
原创粉丝点击