您所在的位置: 首页 > 开发 > JAVA > JAVA专区 > J2SE >

野马的性格 Java SE 6.0新特性体验(3)

http://developer.51cto.com  2006-11-22 13:36  朱先忠编译  天极开发  我要评论(0)
  • 摘要:Mustang(也称作Java SE 6),如今刚进入其第二个测试阶段。本文作者将同你进一步探讨这个新的发行版本中所提供的许多新的特征(从控制台I/O和存取权限控制方法到系统托盘API和表格排序和过滤等)。
  • 标签:Java  Mustang  新特性

四、以编程方式存取网络参数

Mustang提供了以编程方式存取网络参数的方法—这是通过在java.net.NetworkInterface类和新的java.net.InterfaceAddress类中提供的10个新的方法实现的。这些新引入的网络接口方法列举如下:

①“public byte[] getHardwareAddress()”:以一个字节数组形式返回这个网络接口的硬件地址(通常是机器地址代码,或MAC—也称作以太网地址)。如果这个接口没有一个硬件地址,或如果不能存取这个地址(因为该用户没有足够的权限),则返回null。如果发生一个I/O错误,则抛出一个java.net.SocketException异常。

②“public List<InterfaceAddress> getInterfaceAddresses()”:返回一个java.util.List,它包含这个网络接口的所有接口地址(作为InterfaceAddress实例)或其中一个子集。如果存在一个安全管理器,那么将使用相应于每一个接口地址的java.net.InetAddress来调用它的一个checkConnect方法。注意,这个方法仅在列表中返回InterfaceAddresses;而且此时,checkConnect并不抛出一个SecurityException异常。

③“public int getMTU()”:返回这个网络接口的最大传输单位(MTU)。该MTU指的是一个通讯协议层能够传递到另一个层的最大包的大小(以字节为单位)。例如,以太网允许的最大MTU是1500字节。根据某一标准(例如以太网)或连接时间(在端到端串行连接时,经常有这种情况),该MTU能够被设置为一个固定长度。如果发生一个I/O错误,则抛出一个SocketException异常。

④“public NetworkInterface getParent()”:如果这个网络接口是一个子接口,则返回这个网络接口的父网络接口(作为一个NetworkInterface实例)。然而,如果这个网络接口是一个物理(非虚拟的)接口或如果这个网络接口是虚拟的并且没有父接口,则返回null。

⑤“public Enumeration<NetworkInterface> getSubInterfaces()”:返回一个包含所有的子接口(也称为虚拟接口)的java.util.Enumeration(作为NetworkInterface的实例)。例如,eth0:1是一个eth0的子接口(一个以太网网络接口名)。

⑥“public boolean isLoopback()”:返回true,如果这个网络接口是一个loopback接口(一种网络接口,在该接口中,外发数据作为输入数据被立即反射回该接口)。如果存在一个I/O问题,则抛出一个SocketException异常。

⑦“public boolean isPointToPoint()”:返回true,如果这个网络接口是一个端到端的接口(例如一个通过调制解调器建立的PPP连接)。如果存在一个I/O问题,则抛出一个SocketException异常。

⑧“public boolean isUp()”:返回true,如果这个网络接口是“up”并且已经“running”。“up”指示已经为这个接口建立起了路由入口。“running”指示要求的系统资源已经分配。如果存在一个I/O问题,则抛出一个SocketException异常。

⑨“public boolean isVirtual()”:返回true,如果这个网络接口是一个虚拟接口(也称作“子接口”)。如果存在一个I/O问题,则抛出一个SocketException异常。

⑩“public boolean supportsMulticast()”:返回true,如果这个网络接口支持多点传送(指一个服务器程序把一个消息的一个副本发送给多个客户端程序的能力)。如果存在一个I/O问题,则抛出一个SocketException异常。

InterfaceAddress类描述了一个网络接口地址。除了通常的实现获得一个哈希代码和获得一个字符串描述等方法之外,这个类还提供了下列三个方法:

◆“public InetAddress getAddress()”:返回给定接口地址:一个IP地址,一个子网掩码和一个广播地址(当该地址是IPv4时);或是一个IP地址和一个网络前缀长度(针对一个IPv6地址)。

◆“public InetAddress getBroadcast()”:返回给定接口地址的广播地址(在IPv4网络中作为一个InetAddress);在IPv6网络中则返回null(此时它没有广播地址)。

◆“public short getNetworkPrefixLength()”:返回给定接口地址的针对IPv6网络的网络前缀长度(或针对IPv4网络的子网掩码)。这个方法的返回值为一个短整型。

【注意】 典型的IPv6值是128(::1/128)或10(fe80::203:baff:fe27:1243/10)。针对IPv4的典型的值是8(255.0.0.0),16(255.255.0.0),或24(255.255.255.0)。

我创建了一个简单的NetParmsDemo应用程序,它展示了NetworkInterface和InterfaceAddress类中提供的许多新的方法。列表3描述了这个应用程序的源代码(见源码文件中的NetParmsDemo.java)。

五、表格排序与过滤

Swing的表格组件在若干方面得到了增强。其中的一个改进是,支持对一个表格中的行数据进行按升/降序排序并且能够过滤掉其中某些行(所有数据来自于表格模型),并最终显示在组件的视图中。

【请记住】排序和过滤仅对视图有影响,而对模型无影响。

排序和过滤基于一个新概念—行排序器对象,它能够对行数据进行排序(和过滤)。把一个行排序器加入到一个表格组件中的最简单的方法是调用javax.swing.JTable中新引入的“public void setAutoCreateRowSorter(boolean autoCreateRowSorter)”方法,下面的代码片断演示了它的用法:

TableModel model = createTableModel ();
JTable table = new JTable (model);
table.setAutoCreateRowSorter (true);

在每次改变模型时,把true传递给setAutoCreateRowSorter()能够使JTable安装一个新的javax.swing.Table.TableRowSorter<M>实例作为行排序器。为了防止在以后改变模型时再创建新的行排序器,可以把false传给一个随后调用的方法。

注意,当你不想定制行排序器时,你也有可能调用setAutoCreateRowSorter()。但是,在调用这个方法后,你仍然能够定制行排序器,这是通过首先调用JTable的新的“public RowSorter<? extends TableModel> getRowSorter()”方法以返回当前行排序器来实现的。


共4页: 上一页 [1] [2] 3 [4] 下一页
【内容导航】
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
 
 验证码: (点击刷新验证码)   匿名发表
  • Linux C编程实战

  • 作者:童永清
  • 本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在Linu..
Copyright©2005-2008 51CTO.COM 版权所有