黑马程序员_GUI&网络编程

GUI

1GUI基本概况

Graphical User Interface的缩写,图形化用户界面

JavaGUI提供的对象都存在java.awtjavax.swing两个包中

awt依赖于本地系统平台,如颜色样式显示,swing跨平台

组件与容器

组件 Component,是GUI图形界面的组成单元。

容器Container,可以存放组件,也可以存放容器。

2布局管理

FlowLayout(流式布局管理器):从左到右的顺序排列。

BorderLayout(边界布局管理器):东,南,西,北,中

GridLayout(网格布局管理器):规则的矩阵

CardLayout(卡片布局管理器):选项卡

GridBagLayout(网格包布局管理器):非规则的矩阵

3建立一个窗体

窗体中可以存放各种组件,所以窗体是容器Container。创建时我们使用的是它的子类

Container的常用子类有两个,WindowPanelWindow是我们常用的窗体,Panel是用来布局的不可见的。

Window也有两个常用子类,FrameDialogFrame是我们常用的带有标题和边框的顶层窗口,Dialog是对话框。

所有AWT包中的类都会运行在AWT线程上

4事件处理

事件处理机制

事件:用户对组件的一个操作。

事件源:发生事件的组件。

监听器:我们需要处理某个事件,就需要在发生事件的组件上添加监听器,也就是java.awt.event包中XxxListener接口的子类。

事件处理器:监听器中的方法。监听器被添加在组件上之后,组件上发生了对应事件就会执行指定方法。

常用事件分类

窗体事件,WindowEvent,窗体打开、关闭、正在关闭、激活、最小化等。

鼠标事件,MouseEvent,鼠标按下、抬起、进入、移出等。

键盘事件,KeyEvent,键盘按下、抬起等。

动作事件,ActionEvent,在某一组件上发生了定义好的动作,例如按钮上鼠标点击或按空格,菜单上鼠标点击或按回车等。

5、GUI的练习:建立一个鼠标监听事件

public class mouse 

{

    private Frame f;

    private Button but;

    private TextField tf;

    

    

    mouse()

    {

              init();

    }

    

    public void init()

    {

               f=new Frame("苗苗  ,I LOVE U");

     

               f.setBounds(800,300,400,200);

              f.setLayout(new FlowLayout());

              tf=new TextField(25);

     

              but=new Button("退出");

     

              f.add(tf);

             f.add(but); 

     

            myevent();

     

            f.setVisible(true);

    }

    private void myevent()

    {

             f.addWindowListener(new WindowAdapter()

             {

                        public void windowClosing(WindowEvent e)

                        {

                                       System.out.println("关闭");

                                       System.exit(0);

     

                          }

             });

     

             tf.addKeyListener(new KeyAdapter()

             {

                       public void keyPressed(KeyEvent e)

                      {

                                int codecount=1;

                               int code=e.getKeyCode();

                               if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))

                              {

                                           System.out.println("非法字符"+codecount++);

                                           e.consume();

                             }     

                      }

           });

     

     but.addKeyListener(new KeyAdapter()

     {

                      public void keyPressed(KeyEvent e)

                        {

                                   if(e.getKeyCode()==KeyEvent.VK_ESCAPE  ^e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)

                                   System.exit(0);

                                  System.out.println(e.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());

                            }

    });

    

     

     

     /*df

     but.addActionListener(new ActionListener()

     {

                     public void actionPerformed(ActionEvent e)

                   {

                                   System.out.println("退出,按钮干的");

                                  System.exit(0);

     

                   }

     });

     */

     but.addActionListener(new ActionListener()

     {

                    private int clickCount2=1;

                   public void actionPerformed(ActionEvent e)

                    {

                                System.out.println("action ok"+"..."+clickCount2++);

                     }

     });

     

     but.addMouseListener(new MouseAdapter()

     {

                  private int count=1;

                 private int clickCount=1;

                 public void mouseEntered(MouseEvent e)

                  {

                             System.out.println("鼠标进入"+count++);

                   }

                 public void mouseClicked(MouseEvent e)

                  {

                              if(e.getClickCount()==2)

                             System.out.println("你是疯子"+clickCount++);

                  }

     });

      

    }

    protected int code() {

// TODO Auto-generated method stub

return 0;

}

public static void main(String[] args)

    {

    new mouse();

    }

      

}

二、Socket网络编程

1网络编程概念

IP地址

每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。 

ipconfig:查看本机IP

ping:测试连接

本地回路地址:127.0.0.1

端口号

每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

端口号范围从0-65535

编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

网络协议

计算机网络中进行数据交换而建立的规则、标准或约定的集合。

UDP

面向无连接,数据不安全,速度快。不区分客户端与服务端。

TCP

面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

Socket

通信的两端都有Socket

网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO传输。

Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IPport

2UDP传输

发送

步骤:

创建DatagramSocket

创建DatagramPacket

使用DatagramSocket发送DatagramPacket

关闭DatagramSocket

接收

步骤:

创建DatagramSocket

创建DatagramPacket

使用DatagramSocket接收DatagramPacket

关闭DatagramSocket

3TCP传输

客户端

步骤:

创建Socket连接服务端

调用SocketgetInputStream()getOutputStream()方法获取和服务端相连的管道流

输入流可以读取服务端输出流写出的数据

输出流可以写出数据到服务端的输入流

服务端

步骤:

创建ServerSocket

调用ServerSocketaccept()方法接收一个客户端请求,得到一个Socket

调用SocketgetInputStream()getOutputStream()方法获取和客户端相连的管道流

输入流可以读取客户端输出流写出的数据

输出流可以写出数据到客户端的输入流

4、练习

//写一个聊天程序

package wangluo;

public class chatsend

{

  private DatagramSocket ds   

  public  chatsend(DatagramSocket ds)

      {

       this.ds=ds;

      }

      public void run()

      {

       try

       {

       BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

       String line=null; 

       while((line=bufr.readLine())!=null)

       {

       if("886".equals(line));

       break;

       

       byte[] buf=line.getBytes(); 

       DatagramPacket dp=   new DatagramPacket(buf,buf.length,InetAddress.getByName("123.223.156.211"),10003);

       }

       }

       catch(Exception e)

       {

       throw new RuntimeException("发送端失败");

       }

      }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值