黑马程序员__GUI__网络编程
来源:互联网 发布:v百科网络流行语 编辑:程序博客网 时间:2024/06/14 02:41
--------- android培训、java培训、期待与您交流! ------------
GUI图形用户界面
Grphical User Interface图形用户接口
用图形的方式,来显示计算机操作的界面,这样更方便,更直观
CLI Command Line User Interface命令行用户接口,就是常见的DOS命令行操作,需要记忆一些常用的命令,操作不直观
Java为GUI提供的对象都存在Java.Awt和javax.Swing两个包中
Awt与Swing
Java.Awt: Abstract Window ToolKit(抽象窗口工具包)需要调用本地系统方法实现功能,属重量级控件
Javax.Swing: 在AWT基础上建立的一套图形界面系统,其实提供了更多的组件,而且完全由Java实现增强了移植性,属轻量级控件
Container为容器,是一个特殊组件该组件中可以通过add方法添加其他组件进来
容器中的组件的排放方式,就是布局
常见的布局管理器
FlowLayout(流式布局管理器)从左到右的顺序排列,Panel默认的布局管理器
BorderLayout(边界布局管理器)东南西北中Frame默认的布局管理器
GridLayout(网格布局管理器)规则的矩阵
CardLayout(卡片布局管理器)选项卡
GridBagLayout(网格包布局管理器)非规则的矩阵
创建图形化界面
1. 创建frame窗体;
2. 对窗体进行基本设置,比如大小setSize(500,400),位置setLocation(300,400),
setBounds(x,y,width,height)设置位置及大小布局setLayout(new FlowLayout());
3. 定义组件;
4. 将组件通过窗体的add方法添加到窗体中;
5. 让窗体显示,通过setVisible(true)
事件监听机制的特点:
1,事件源;2事件;3监听器4事件处理
事件源:就是awt包或者swing包中的那些图形界面组件
事件:每一个事件源都有自己特有的对应事件和共性事件
监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
以上三者,在java中都已经定义好了,获取其对象来用就可以了
我们要做的事情是,是就是对产生的动作进行处理
因为WindowListener的子类WindowAdapter已经实现了WindowListener接口,并覆盖了其中的所有方法,那么我只要继承自WindowAdapter覆盖我需要的方法即可
当用到图形化界面的时候一般要导两个包java.awt.*;和java.awt.event.*;
public void windowClosing(WindowEvent e)
{
System.exit(0);//关闭窗口
}
public void windowActivated(WindowEvent e)
{//窗口处于最前端}
public void windowOpened(WindowEvent e)
{//窗口打开了}
按钮ActionListener是少数没有适配器(方法超过3个)接口中的一个
在按钮上添加动作要注意添加
but.addActionListener(new ActionListener())对鼠标键盘都起作用
but.addMouseListener(new MouseAdapter())当有它时,会先执行鼠标动作,因为它更具体
e.consume()使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理些事件
Menu extends MenuItem菜单(Menu)里可以放条目(MenuItem)
Menu add(MenuItem)
FileDialog openDia,saveDia;
openDia=new FileDialog(f,"我的打开",FileDialog.LOAD)
最后的参数为模式,有两个LOAD,SAVE
在写事件的时候要判断是否取消
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
if(dirPath ==null || fileName==null)
return;//如果取消的话就返回,什么也不做
jar -cvfm my.jar 1.txt mymenu
将包mymenu打成jar包,把1.txt中的主函数信息传给jar包
1.txt中的内容:
Main-Class:(此处一个有空格) mymenu.MyMenuDemo(这里一定有回车)
在此之前要先将jar文件注册的系统中,其过程如下:
xP系统:工具à文件夹选项à文件类型à新建扩展名为jar的文件类型à选中jar,点击“高级”按钮à更改图标,图标可以任意选;点击”新建”按键à添加open操作,操行名称写完“open”,用于执行操作的程序选择JDK目录下的javaw工具,并在末尾加上–jar参数。
Win7系统:
1、选择默认程序:右击jar包,打开方式->选择默认程序->浏览,选中jre下bin文件中javaw.exe(比如我的javaw.exe在D:\ProgramFiles\Java\jre6\bin下)。
2、编辑注册表:HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command,修改数据数值为"D:\ProgramFiles\Java\jdk1.6.0_21\jre\bin\javaw.exe" -jar "%1"(只要在原来的数值下添加-jar即可)。
网络参考模型
IP地址:网络中设备的标识,不易记忆,可用主机名,本地回环地址:127.0.0.1主机名:localhost
端口号:用于标识进程的逻辑地址,不同进程的标识,有效端口:0~65535,其中0~1024系统使用或保留端口
传输协议:通讯的规则,常见协议:TCP,UDP
UDP:
将数据及源和目的封装成数据包中
不需要建立连接
每个数据包的大小限制在64K内
因无连接,是不可靠协议,不需要建立连接,速度快
TCP:
建立连接,形成传输数据的通道
在连接中进行大数据量传输
通过三次握手完成连接
是可靠协议,建立连接,效率会稍低
Socket
Socket就是为网络服务提供的一种机制
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
InetAddress ia = InetAddress.getByName("www.baidu.com");
ia.getHostAddress();//获取主机地址
ia.getHostName();//获取主机名
UDP例子
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception
{
//1.创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
//2.确定数据,并封装成数据包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
byte[] buf = "udp ge men lai le".getBytes();
DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);
//3.通过socket服务,将已有的数据包发送出去,通过send方法
ds.send(dp);
//4.关闭资源
ds.close();
}
}
/*
需求:定义一个应用程序,用于接收udp协议传输的数据并处理
思路:
1.定义udpsocket服务。通常会监听一个端口,其实就是给这个接收网络应用程序定义数字标识
方便于明确哪些数据过来该应用程序可以处理
2.定义一个数据包,因为要存储接收到的字节数据
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息
3.通过socket服务的receiver方法将收到的数据存入已定义好的数据包中
4.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
5.关闭资源
*/
class UdpRece
{
public static void main(String[] args)throws Exception
{
//1.创建udp socket,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//2.定义数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3.通过服务的receiver方法将收到数据存入数据包中
ds.receive(dp);
//4.通过数据包的方法获取其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip + ".."+data+".."+port);
//5.关闭资源
ds.close();
}
}
TCP示例
import java.net.*;
import java.io.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
//创建客户端的socket服务,指定目的主机和端口
Socket s = new Socket("127.0.0.1",10003);
//为了发送数据,应该获取socket流中的输出流
OutputStream out = s.getOutputStream();
out.write("tcp哥们来了".getBytes());
s.close();
}
}
/*
需求:定义端点接收数据并打印在控制台上
服务端:
1.建立服务端的socket服务,ServerSocket();并监听一个端口
2.获取连接过来的客户端对象。通过ServerSocket的accept方法(阻塞式的)
3.客户端如果发过来数据,那么服务端要使用对应的客户端对象,
并获取到该客户端对象的读取流来读取发过来的数据,并打印在控制台
4.关闭服务端(可选)
*/
class TcpServer
{
public static void main(String[] args)throws Exception
{
//建立服务端socket服务,并监听一个端口
ServerSocket ss = new ServerSocket(10003);
//通过accept方法获取连接过来的客户端对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"....connected");
//获取客户端发送过来的数据,那么要使用客户端对象的读取流,来读取数据
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();//关闭客户端
}
}
并发访问服务端
ServerSocket ss = new ServerSocket(10007);
while(true)
{
Socket s = ss.accept();
new Thread(new PicThread(s)).start();
}
InetSocketAddress此类实现 IP套接字地址(IP地址 +端口号)。
ServerSocket
(int port, int backlog)
设定连接数量backlog
--------- android培训、java培训、期待与您交流! ------------
- 黑马程序员__GUI__网络编程
- 【黑马程序员】网络编程
- 黑马程序员 网络编程
- 黑马程序员:网络编程
- 黑马程序员-------网络编程
- 黑马程序员-网络编程
- 黑马程序员:网络编程
- 黑马程序员--网络编程
- 黑马程序员--网络编程
- 黑马程序员-网络编程
- 黑马程序员-------网络编程
- 黑马程序员-网络编程
- 黑马程序员-----网络编程
- 黑马程序员-网络编程
- 黑马程序员-网络编程
- 黑马程序员 网络编程
- 黑马程序员----- 网络编程
- 黑马程序员 网络编程
- 多线程通信
- 什么是嵌入式工程师,发展前景如何
- HTML中textarea标签的换行方法
- CKEditor Tutorials - TOC
- C#日期比较类
- 黑马程序员__GUI__网络编程
- java volatile 同步
- android中Button监听器的几种实现方式
- solr 分词之 同义词(synonyms)
- Ubuntu下Eclipse中文乱码解决方案
- Android 带checkbox的listView 实现多选,全选,反选
- C#判断日期时间格式是否正确
- 排序算法-二叉树排序
- ado执行存储过程中包含结果集获取输出参数为VT_EMPTY