网络程序设计是指编写与其他计算机进行通信的程序。Java已经将网络程序所需要的东西封装成不同的类,只要创建这些类的对象,使用相应的方法,就可以编写出高质量的网络通信程序。
TCP/IP模式是一种层次结构,共分为4层,分别为应用层、传输层、互联网层和主机到网络层。各层实现特定的功能,提供特定的服务和访问接口,并具有相对的独立性。
TCP协议是一种以固定连接为基础的协议,它提供两条计算机间可靠的数据传输。TCP可以保证从一端数据送至连接的另一端时数据能够到达,而且抵达数据的排列顺序和送出时的顺序相同。因此TCP协议适合可靠性要求比较高的场合。如HTTP、FTP和Telnet等需要使用可靠的通信频道。
UDP是无连接通信协议,不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。UDP以独立发送数据包的方式进行。UDP协议适合一些对数据准确性要求不高的场合。一些防火墙和路由器会设置成不允许UDP数据包传输,如遇UDP连接方面的问题,可先确定是否允许使用UDP协议。
一般而言,一台计算机只有单一的连接到网络的“物理连接”,所有的数据都通过此连接对内或对外送达特定的计算机,这就是端口。端口被规定为一个0~65535之间的整数。HTTP服务的端口是80,FTP使用的端口是21。0~1023之间的端口数用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口数,以避免端口号被另一个应用或系统服务所用。
网络程序中的套接字(Socket)用于将应用程序与端口连接起来。套接字是一个假象的连接装置。java将套接字抽象化为类,程序设计者只需创建Socket类对象,即可使用套接字。
TCP网络程序设计是指利用Socket类编写通信程序。利用TCP协议进行通信的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序。(1)服务器程序创建一个ServerSocket(服务器端套接字),调用accept()方法等待客户来连接;(2)客户端程序创建一个Socket,请求与服务器建立连接;(3)服务器接收客户的连接请求,同时创建一个新的Socket与客户建立连接。服务器继续等待新的请求。
Internet上主机用两种方式表示地址,分别为域名和IP地址。java.net包中InteAddress类对象含一个Internet主机地址的域名和IP地址。
方法 | 返回值 | 功能描述 |
---|---|---|
getByName(String host) | InetAddress | 在给定主机名的情况下确定主机的IP地址 |
getHostAddress() | String | 返回IP地址字符串 |
getHostName() | String | 获取此IP地址的主机名 |
get(int index) | Object | 用于获取指定索引位置的对象 |
getLocalHost() | InetAddress | 返回本地主机的InetAddress对象 |
toString() | String | 将此IP地址转换为String |
InetAddress类提供的getByName()方法可以将一个域名或IP地址传递给该方法的参数,以获取一个InetAddress对象,该对象含有主机地址的域名和IP地址。
ServerSocket用来表示服务器套接字。服务器套接字通过制定的端口来等待连接的套接字,它的主要功能是等待来自网络上的连接“请求”。它可通过指定的端口来等待连接的套接字。服务器套接字可以一次与一次套接字连接。如果多台客户机同时提出连接请求,服务器套接字会将请求连接的客户机存入队列中,然后从中取出一个套接字,与服务器新建的套接字连接起来。若请求连接数大于最大容纳属,则多出的连接请求被拒绝。队列的默认大小是80.
ServerSocket类的构造方法有:(1)创建非绑定服务器的套接字:new ServerSocket();(2)创建绑定特定端口的服务器套接字:new ServerSocket(int port);(3)指定队列的最大长度,创建绑定到指定本地端口号的套接字:new ServerSocket(int port, int backlog)。
方法 | 返回值 | 说明 |
---|---|---|
accept() | Socket | 等待客户机的连接,若连接,则创建一套接字 |
isBound() | boolean | 判断ServerSocket的绑定状态 |
getInetAddress() | InetAddress | 返回此服务器套接字的本地地址 |
isClosed() | boolean | 返回服务器套接字的关闭状态 |
close() | void | 关闭服务器套接字 |
bind(SocketAddress endpoint) | void | 将ServerSocket绑定到待定地址(IP地址和端口号) |
getInetAddress() | int | 返回服务器套接字等待的端口号 |
调用ServerSocket类的accept()方法会返回一个核客户端Socket对象相连的Socket对象,服务器端的Socket对象使用getOutputStream()方法获得的输出流将指向客户端Socket对象使用getInputStream()方法获得的那个输入流;同样,服务端的Socket对象使用getInputStream()方法获得的输入流将指向客户端Socket对象使用getOutputStream()方法获得的那个输入流。也就是说,当服务器向输出流写入信息时,客户端通过相应的输入流就能读取,反之亦然。
accept()方法会堵塞线程的继续执行,直到接受到客户的呼叫为止。如果没有客户请求的情况下,accept()方法没有发生阻塞,那么程序出现了问题。通常是使用了一个还在被其他程序占用的端口号,导致ServerSocket绑定没有成功。
Socket类是套接字类,使用Socket时,需要制定待连接服务器的IP地址和端口号。客户机创建了Socket对象以后,会向指定的IP地址及端口尝试连接。服务器套接字会创建新的套接字,与客户端套接字建立连接。服务端套接字与客户端套接字成功连接后,则可以获取套接字的输入/输出流,进行数据交换。
Socket类常用的构造方法:(1)创建到服务器连接的套接字:new Socket(String host,int port);(创建Socket时,可能发生IOException与UnknownHostException异常,需要捕获该异常)(2)通过InetAddress类创建Socket类对象。
方法 | 返回值 | 说明 |
---|---|---|
getInetAddress() | InetAddress | 获取套接字连接的地址 |
getPort() | int | 获取此套接字连接的端口 |
getLocalAddress() | InetAddress | 获取套接字绑定的本地地址 |
getLocalPort() | int | 获取套接字绑定的本地端口 |
close() | void | 关闭套接字连接 |
getInputStream() | InputStream | 获取套接字的输入流 |
getOutputStream() | OutputStream() | 获取套接字的输出流 |
若客户机要连接服务器,则服务器必须首先做出动作。因此运行程序时一定要先启动服务端程序在运行客户端程序。
基于UDP通信的基本模式:(1)将数据打包,称为数据包。然后将数据包发往目的地。(2)接收别人发来的数据包,然后查看数据包。
发送数据包的步骤:(1)使用DatagramSocket()创建一个数据包套接字。(2)使用DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)创建要发送的数据包。(3)使用DatagramSocket类的send()方法发送数据包。
接收数据包的步骤:(1)使用DatagramSocket(int port)创建数据包套接字,绑定到接口的端口。(2)使用DatagramPacket(byte[] buf,int length)创建字节数组来接收数据包。(3)使用DatagramPacket类的receive()方法,接收UDP包。
DatagramSocket类建立UDP程序的套接字,数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编制和路由的。常用的构造方法有:(1)创建绑定到本地主机上任何可用的端口:new DatagramSocket();(2)创建绑定到本地主机上的指定端口的套接字。new DatagramSocket(int port);(3)创建绑定到指定本地地址,该方法适用于多块网卡和多个IP地址:new DatagramSocket(int port,InetAddress address)。
在接收程序时必须指定一个端口号,不要让系统随机产生。在发送程序时,系统自动分配即可。
DatagramPacket类表示数据报包,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息,从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序达到。该类不对包投递做出保证。构造方法有:(1)接收指定长度,创建DatagramPacket实例:new DatagramPacket(byte[] buf ,int length);(2)指定数据包的内存空间和大小,同时指定数据包的目标地址和端口:new DatagramPacket(byte[] buf,int length,InetAddress address,int port);。
要广播或接收广播的主机地址必须加入到一个组内,地址在224.0.0.0~224.255.255.255之间,这类地址并不代表某个特定主机的位置。加入到同一个组的主机可以在某个端口上广播信息,也可以在某个端口上接收信息。
在进行应用程序开发时,经常需要选择文件,这些操作可以通过javax.swing.JFileChooser类来实现。JFileChoose类为用户选择文件提供了一个简单的机制。通过该类创建的对象是一个文件选择对话框,可以方便地选择文件。常用构造方法有:
构造方法 | 说明 |
---|---|
JFileChooser() | 构造一个指向用户默认目录的文件选择对话框 |
JFileChooser(File f) | 使用给定的File作为路径来构造一个文件选择对话框 |
JFileChooser(String dir) | 构造一个使用给定路径的选择对话框 |
JFileChooser类还提供了两个比较重要的字段,即APPROVE_OPTION和CANCEL_OPTION,分别用于判断用户在文件选择对话框中是单击了“打开”按钮还是单击了“取消”按钮。如果单击了“打开”按钮,表示用户选择了文件,可以对文件进行操作;如果单击的是“取消”按钮,表示用户没有选择文件。
JFileChooser类的实例调用showOpenDialog(Component parent)方法,可以打开一个文件选择对话框,该方法返回一个整数值,用于判断用户是否选择了文件。如果选择了文件就可以通过getSelectFile()方法获得所选文件的File对象,通过File对象就可以获得文件的相关属性,如文件名、路径、文件大小等信息。
JFileChooser类提供了setFileFilter(FileFilter filter)方法,通过该方法可以为文件选择对话框设置过滤器,使其只显示指定类型的文件。该方法的参数类型javax.swing.filechooser.FileFilter是一个抽象类,实现该类可以对文件进行过滤。
方法 | 说明 |
---|---|
public abstract boolean accept(File file) | 用于对文件进行过滤 |
public abstract String getDescription() | 返回文件选择对话框中文件类型的描述信息 |
javax.swing.filechooser.FileNameExtensionFilter类实现了FileFilter类。FileNameExtensionFilter有一个构造方法,通过该类的实例可以实现文件的过滤操作。
构造方法 | 说明 |
---|---|
FileNameExtensionFilter(String description,String...extensions) | 第一个参数description是文件选择对话框中文件类型的描述信息,第二个参数extensions是文件选择对话框中允许显示的文件类型,多个文件类型用逗号隔开。 |
Swing提供的javax.swing.JToolBar类创建的对象就是一个工具栏。可以放在窗体默认布局的顶部、左侧、右侧或底部,也可位于窗体之外,称为浮动工具栏。其构造方法有:
构造方法 | 说明 |
---|---|
JToolBar() | 构造一个默认位置为水平方向的工具栏 |
JToolBar(String name) | 构造一个默认位置为水平方向,当工具栏称为浮动状态时具有指定的标题。 |
JToolBar类也提供了操作工具栏的方法,可以实现工具栏的设置。
方法 | 说明 |
---|---|
Component add(Component c) | 在工具栏的末尾添加参数指定的组件,如按钮、复选框和单选按钮等 |
void addSeparator() | 将默认大小的分隔符添加到工具栏的末尾 |
void addSeparator(Dimension size) | 将指定大小的分隔符添加到工具栏的末尾 |
使用类javax.swing.JMenuBar创建的对象是一个菜单栏,菜单栏只有一个无入口参数的构造方法JMenuBar(),用于构造一个菜单栏。JMenuBar类用于创建菜单栏,创建了菜单栏就可以调用该类的add(JMenu menu)方法把菜单添加到菜单栏上。
构造方法 | 说明 |
---|---|
JMenu() | 构造一个没有初始文本的新菜单 |
JMenu() | 构造一个初始文本为指定字符串的新菜单 |
方法 | 说明 |
---|---|
add(JMenuItem menuItem) | 将某个菜单项追加到此菜单的末尾 |
insert(JMenuItem menuItem,int pos) | 在给定位置插入指定的菜单项 |
addSeperator() | 将新分隔符追加到菜单的末尾 |
insertSeparator(int pos) | 在指定的位置插入分隔符 |
类javax.swing.JMenuItem创建的对象是一个菜单项,当用户选择某个菜单项时,将触发该菜单项的动作事件,进而完成该菜单项的功能。
构造方法 | 说明 |
---|---|
JMenuItem() | 创建不带有文本和图标的菜单项 |
JMenuItem(String text) | 创建带有指定文本的菜单项 |
JMenuItem(Icon icon) | 创建带有指定图标的菜单项 |
JMenuItem(String text,Icon icon) | 创建带有指定文本和图标的菜单项 |
使用JMenuItem类的setIcon(Icon icon)方法可以为菜单项添加图标。菜单项通常使用动作事件监听器来捕获动作事件,进而实现相应的业务逻辑。为菜单项添加动作事件监听器可以使用addActionListener(ActionListener action Listener)方法来实现。
使用类javax.swing.JPopupMenu创建的对象是弹出菜单,弹出菜单是一种特殊形式的菜单,并不固定在窗体中的某个位置,而是由鼠标指针决定弹出菜单出现的位置。
构造方法 | 说明 |
---|---|
JPopupMenu() | 构造一个新的弹出菜单 |
JPopupMenu() | 构造一个有标题的弹出菜单 |
方法 | 说明 |
---|---|
add(JMenuItem menuItem) | 将指定菜单项添加到弹出菜单的末尾 |
addSeparator() | 将新分隔符添加到菜单的末尾 |
isPopupTrigger(MouseEvent e) | 如果弹出菜单的当前组件将鼠标事件视为弹出菜单的触发器,则返回true |
show(Component parent,int x, int y) | 在组件调用这坐标空间中的位置(x,y)处显示弹出菜单 |
分割面板可以将其所在的区域分割为两部分,这两部分之间有一个分隔条,通过调整分隔条的位置可以改变这两部分的相对大小,用户可以根据需要进行调整。并且分割条两侧的每一部分中还可以再放分割面板,实现分割面板的嵌套使用。
使用javax.swing.JSplitPane类创建的对象是一个分割面板。
构造方法 | 说明 |
---|---|
JSplitPane() | 创建一个在水平方向进行分割、无连续布局、为组件使用两个按钮的分割面板 |
JSplitPane(int orient) | 创建一个在指定方向上进行分割且无连续布局的分割面板 |
JSplitPane(int orient,Component leftC,Component rightC) | 创建一个在指定方向上进行分割、不连续重绘的指定组件的分割面板 |
在JSplitPane类的构造方法上有一个参数orient,该参数用来指定分割面板分割方向的字段。
字段 | 说明 |
---|---|
JSplitPane.HORIZONCAL_SPLIT | 表示在水平方向上对分割面板进行分割 |
JSplitPane.VERTICAL_SPLIT | 表示在垂直方向上对分割面板进行分割 |
JSplitPane类创建的对象是一个分割面板,JSplitPane类提供了一些方法,可以完成分割面板的常用操作。
方法 | 说明 |
---|---|
getBottomComponent() | 返回分隔条下面或者右边的组件 |
getDividerSize() | 返回分隔条的大小 |
getLeftComponent() | 返回分隔条左边或者上面的组件 |
getRightComponent() | 返回分隔条右边或者下面的组件 |
getTopComponent() | 返回分隔条上面或者左边的组件 |
remove(Component component) | 移除分割面板中的子组件component |
setBottomComponent(Component component) | 将组件设置到分割条的下面或者右边 |
setLeftComponent(Component component) | 将组件设置到分隔条的左边或者上面 |
setRightComponent(Component component) | 将组件设置到分隔条的右边或者下面 |
setTopComponent(Component component) | 将组件设置到分隔条的上面或者左边 |
setDividerLocation(int location) | 设置分隔条的位置 |
setDiverSize(int newSize) | 设置分割条的大小 |
setOneTouchExpandable(boolean newValue) | 参数设置true时,可以使分割面板在分隔条上提供一个UI小部件来快速展开/折叠分隔条 |
setOrientation(int orient) | 设置分割方向 |
选项卡面板可以方便地在窗体上放置多个标签页,每个标签页相当于一个与此选项卡大小相同的容器,可以在每个标签页的容器中放置一个或多个组件,使每个标签页实现不同的界面效果。
使用javax.swing.JTabblePane类创建的对象是一个选项卡面板,它允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换。
构造方法 | 说明 |
---|---|
JTabbedPane() | 创建一个在上面显示标签、布局方式为自动换行的空选项卡 |
JTabbedPane(int tabPlace) | 创建一个在指定位置显示标签、布局方式为自动换行的空选项卡 |
JTabbedPane(int tabPlace,int tabLayout) | 创建一个在指定位置显示标签和具有指定布局策略的空选项卡 |
在JTabbedPane类的构造方法中的参数tabPlace是用于指定选项卡面板显示位置的字段,参数tabLayout是指定选项卡面板标签布局的字段。
字段 | 说明 |
---|---|
JTabbedPane.TOP | 表示在选项卡的上边位置显示标签 |
JTabbedPane.BOTTOM | 表示在选项卡的下边位置显示标签 |
JTabbedPane.LEFT | 表示在选项卡的左侧位置显示标签 |
JTabbedPane.RIGHT | 表示在选项卡的右侧位置显示标签 |
JTabbedPane.WRAP_TAB_LAYOUT | 当选项卡的一行或一列不能显示所有标签时,标签会自动机换行或换列 |
JTabbedPane.SCROLL_TAB_LAYOUT | 当选项卡的一行或一列标签显示不全时,标签行或列会出现UI调节组件 |
JTabbedPane类创建的对象是一个选项卡面板。
方法 | 说明 |
---|---|
addTab(String title,Component component) | 添加一个标题为title且没有图标的选项卡 |
addTab(String title ,Icon icon,Component component) | 添加一个标题为title,图标为icon的选项卡 |
addTab(String title,Icon icon,Component component,String tip) | 添加一个标题为title,图标为icon,工具提示文本为tip的选项卡 |
getSelectedComponent() | 返回选项卡面板中当前选择的选项卡 |
getSelectedIndex() | 返回当前选择的选项卡的索引 |
getTabComponentAt(int index) | 返回索引值为index位置上的选项卡 |
getTabCount() | 返回选项卡面板的选项卡数 |
getTitleAt(int index) | 返回索引值为index位置的选项卡标题 |
getToolTipTextAt(int index) | 返回索引值为index位置的选项卡工具提示文本 |
insertTab(String title,Icon icon,Component component,String tip,int index) | 在索引值为index位置插入一个标题为title,图标为icon,工具提示文本为tip的选项卡 |
setIconAt(int index,Icon icon) | 将索引值为Index位置的图标设置为icon |
setSelectedComponent(Component c) | 设置此选项卡面板的已选组件 |
setSelectedIndex(int index) | 设置索引值为index位置处的选项卡为当前选项卡 |
setTitleAt(int index,String title) | 将索引值为index位置的选项卡标题设置为true |
setToopTipTextAt(int index,String toolTipText) | 将索引值为index位置的工具提示文本设置为toolTipText |
桌面面板和内部窗体用于创建多文档界面。多文档界面的特点是存在一个外部窗体(也称为主窗体),在外部窗体中可以有多个内部窗体,内部窗体支持拖动、关闭、图标化、调整大小、标题显示和菜单栏等功能;当外部窗体最小化时,内部窗体会被隐藏,当拖动内部窗体时,不能拖出外部窗体。多文档界面的创建方法是首先创建桌面面板,然后把桌面面板放到JFrame窗体内容面板默认布局的中央,在创建内部窗体,并把内部窗体放到桌面面板容器中。
javax.swing.JDesktopPane类是多文档界面或虚拟桌面的容器,该类创建的对象是一个桌面面板,JDesktopPane类只有一个无入口参数的构造方法JDesktopPane(),用于构造一个桌面面板容器。
JDesktopPane类创建的对象是一个桌面面板,该类提供的方法可以方便地操作桌面面板中的内部窗体和组件。
方法 | 说明 |
---|---|
JInternalFrame[] getAllFrames() | 返回桌面面板中当前显示的所有内部窗体 |
JInternetFrame getSelectedFrame() | 返回此桌面面板中当前活动的内部窗体。如果当前没有活动的内部窗体,则返回null |
void remove(int index) | 从此桌面面板中移除指定索引的组件 |
void removeAll() | 从此桌面面板中移除所有组件 |
JInternalFrame selectFrame(boolean b) | 选择此桌面面板中的下一个内部窗体 |
void setDragMode(int dragMode) | 设置桌面面板使用的“拖动样式” |
void setSelectedFrame(JInternalFrame f) | 设置此桌面面板中当前活动的内部窗体 |
类JDesktopPane创建的对象是一个桌面面板,使用该类的setDragMode方法可以设置内部窗体的拖动模式:
字段 | 说明 |
---|---|
JDesktopPane.LIVE_DRAG_MODE | 表示正在被拖动项的所有内容都出现在桌面面板内部,是默认设置 |
JDesktopPane.OUTLINE_DRAG_MODE | 表示正在被拖动项的轮廓出现在桌面面板内部 |
new Integer(Integer.MIN_VALUE)用于指定把标签放在桌面面板最底层的关键代码,这样标签就可以显示在所有内部窗体的后方,而不会遮挡住内部窗体。
javax.swing.JInternalFrame类创建的对象是一个内部窗体。
构造方法 | 说明 |
---|---|
JInternalFrame() | 创建不可调整大小、不可关闭、不可最大化、不可图标化、没有标题的内部窗体 |
JInternalFrame(String title) | 创建不可调整大小、不可关闭、不可最大化、不可图标化,具有指定标题的内部窗体 |
JInternalFrame(String title,boolean resizable) | 创建不可调整大小、不可关闭、不可图标化,具有指定标题和可调整大小的内部窗体 |
JInternalFrame(String title,boolean resizable,boolean choseable) | 创建不可最大化、不可图标化,具有指定标题、可调整大小及可关闭的内部窗体 |
JInternalFrame(String title,boolean resizable,boolean choseable,boolean maximizable) | 创建不可图标化,具有指定标题、可调整大小及可关闭和可最大化的内部窗体 |
JInternalFrame(String title,boolean resizable,boolean choseable,boolean maximizable,boolean iconifiable) | 创建具有指定标题、可调整大小、可关闭、可最大化和可图标化的内部窗体 |
JInternalFrame类创建的是一个内部窗体,该类提供的方法可以实现对内部窗体的常用设置:
方法 | 说明 |
---|---|
void dispose() | 使此内部窗体不可见,取消选定并关闭它 |
String getTitle() | 返回内部窗体的标题 |
boolean isClosed() | 返回此内部窗体当前是否已关闭 |
boolean isIcon() | 返回内部窗体当前是否已图标化 |
boolean isSelected() | 返回内部窗体当前是否为选定的或处于激活状态 |
void setFrameIcon(Icon icon) | 设置要在此内部窗体的标题栏中显示的图像 |
void setMaximizable(boolean b) | 设置内部窗体是否提供最大化按钮 |
void setJMenuBar(JMenuBar m) | 设置内部窗体的菜单栏 |
void setResizable(Boolean b) | 设置是否可以调整内部窗体的大小 |
void setSelected(boolean selected) | 设置是否激活此内部窗体 |
void setTitle(String title) | 设置内部窗体的标题 |
void show() | 如果内部窗体不可见,则将该内部窗体置于前端,使其可见并尝试选定它 |
void toBack() | 将此内部窗体发送至后台 |
void toFrond() | 将此内部窗体置于前端 |
系统托盘是个特殊的区域,能够驻留程序,被运行在桌面上的所有程序共享,通常显示在桌面的底部。
java.awt.SystemTray类表示桌面的系统托盘,该类提供了一些方法可以实现托盘操作。
方法 | 说明 |
---|---|
void add(TrayIcon trayIcon) | 将托盘图标添加到系统托盘 |
static SystemTray getSystemTray() | 获取表示桌面托盘区的系统托盘实例 |
TrayIcon[] getTrayIcons() | 返回由此应用程序添加到托盘中的所有图标的数组 |
Dimension getTrayIconSize() | 返回托盘图标在系统托盘中占用的空间大小(以像素为单位) |
static boolean isSupported() | 返回当前平台是否支持系统托盘 |
void remove(TrayIcon trayIcon) | 从系统托盘中移除指定的托盘图标 |
在使用系统托盘时,先使用SystemTray类的isSupported()方法判断当前系统是否支持系统托盘,如果支持系统托盘,就可以使用SystemTray类的getSystemTray()方法获得系统托盘。
系统托盘可以包含一个或多个托盘图标,可以使用SystemTray类的add(TrayIcon trayIcon)方法将托盘图标添加到系统托盘,当不再需要托盘时,可以使用SystemTray类的remove(TrayIcon trayIcon)方法将托盘图标移除。
java.awt.TrayIcon类创建的对象是一个托盘图标。
方法 | 说明 |
---|---|
TrayIcon(Image image) | 创建带有指定图像的托盘图标 |
TrayIcon(Image image,String tooltip) | 创建带有指定图像和工具提示文本的托盘图标 |
TrayIcon(Image image,String tooltip,PopupMenu popup) | 创建带有指定图像、工具提示文本和弹出菜单的托盘图标 |
方法 | 说明 |
---|---|
addMouseListener(MouseListener listener) | 添加鼠标监听器,以接收发自此托盘图标的鼠标事件 |
setImage(Image image) | 设置托盘图标的图像 |
setPopupMenu(PopupMenu popup) | 设置托盘图标的弹出菜单 |
setToolTip(String tooltip) | 设置托盘图标的工具提示文本 |