Java编程思想笔记九

Swing中有一个非常令人称道的原则,称为“正交使用”。意思是,一旦你理解了库中的某个通用概念,你就可以把这个概念应用到其他地方。

Swing 基础

Swing有它自己的专用线程来接收UI事件并更新屏幕,如果从其他线程着手对屏幕进行操作,那么就可能产生冲突和死锁。其他线程通过事件分发线程提交要执行的任务,可以通过将任务提交给SwingUtilities.invokeLater()来实现这种方式,这个方法会通过事件分发线程将任务放置到(最终将得到执行的)待执行事件队列中。程序中的所有代码都遵循这种通过SwingUtilities.invokeLater()来提交操作的方式。这包括启动程序自身,即main也不应该调用Swing方法,就像上面的程序一样,它应该向事件队列提交任务。

Java中设计和实现图形用户界面的工作主要有:

  1. 创建组件(Component):创建组成界面的各种元素,如按钮、文本框等。
  2. 指定布局(Layout):根据具体需要排列组件的位置关系。
  3. 响应事件(Event):定义图形用户界面的事件和各界面元素对不同事件的响应,从而实现图形用户界面与用户的交互功能。

Read More

JavaMail简介

JavaMail

简介

虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。JAF在Java6之后已经合并到JDK中,而JDK5之前需要另外下载JAF的类库。使用JavaMail,我们可以实现类似OutLook的软件。

Read More

Java编程思想笔记七

枚举类型

基本enum特性

  • Enum类是枚举的一个封装类,是所有枚举类型的超类,它是一个没有抽象方法的抽象类。Enum类实现了Comparable接口,所以它具有compareTo() 方法。同时它还实现了Serializable接口。
  • ordinal() : 获取枚举元素声明时的顺序,从0开始计算
  • 可以使用”==”来比较两个枚举实例相同与否,由于编译器自动实现了equals()和hashCode()两个方法
  • 调用getDeclaringClass()方法,我们就能知道其所属的enum类
  • name() : 返回enum实例声明时的名字,与使用toString()方法效果相同
  • valueOf() : Enum中的static方法,根据给定的名字返回相应的enum实例,如果不存在给定实例的名字,将会抛出异常。
  • values() : 这个方法不是Enum提供的。

Read More

Java编程思想笔记三

持有对象

基本概念

容器类类库的用途是“保存对象”,可划分为两个不同概念:

  1. Collection。一个独立元素的序列,这些元素都服从一条或多条规则。

    • List必须按照插入顺序保存元素。
    • Set不能有重复元素
    • Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)
  2. Map。一组成对的“键值对”对象,允许你使用键来查找值。也被称为”关联数组”或”字典”。某种意义上来说,ArrayList也是一种Map

    Read More