枚举

枚举是指将变量的值一一列举出来,变量的值只限于列举出的范围
如,一周只有7天,一年只有12个月
与单例模式不同的是,枚举中可以有一个以上的实例

阅读更多

GUI概叙

GUI(Graphical User Interface)又被称为图形用户接口
对比需要记忆操作命令的CLI(Command Line Interface)
它显得更为方便与直观

Java相关包

java.awt : (abstract window ToolKit)抽象窗口工具包
    直接属于java基本类库,需调用本地系统方法实现功能,属重量级控件
javax.swing : (javax代表扩展包)
    属于java扩展包
    在AWT的基础上建立的一套图形界面系统,其提供了更多组件,且完全由Java实现
    增强了移植性,属于轻量级控件(即与系统的关联(耦合)性低)

继承体系图

窗口相关

框架相关

窗体布局

Java的窗体布局共有
    流式布局、边界布局、网格布局、网格包布局、卡片布局....

一个按钮

相关方法

1
2
3
public void addActionListener(ActionListener l)//添加指定的动作监听器
public void removeActionListener(ActionListener l)//移除指定的动作监听器
public ActionListener[] getActionListeners()//获取当前所有注册的监听器的数组

一个文本

更改背景颜色

鼠标事件

键盘事件

在键盘适配器类中有关于键盘按键操作的方法
分别为 按下: Pressed 释放: Released 

菜单

与菜单有关的类共有 MenuBar 菜单栏,Menu 菜单,以及MenuItem 菜单项
其中菜单栏可以包含菜单和菜单项(如果菜单中只有一项)
菜单可以包含菜单(多级目录)和菜单项
然后就是关于窗体的设置,awt是不支持swing的菜单栏的
如果要使用swing的菜单栏,那么得使用swing的窗体

netBeans

netBeans是Sun公司提供的一款awt编译器,使用它能快速的设置awt界面
如何修改窗体图标 :
    需要用到ToolKit类,这个类是所有AWT的实际实现抽象超类
    通过这个类的getDefaultToolKit可以获得该抽象类的子类实现
    使用方法getImage通过图片路径获得图片对象
    给窗体设置Icon
如何设置窗体居中
    首先获取当前设备的屏幕宽度与高度,通过ToolKit的getScreenSize方法
    获得窗体宽高
    然后两者相减/2即可
如何修改窗体的皮肤
    找到UIManager类,它用于管理外观
    使用setLookAndFeel 设置外观,设置外观的字符串
    使用系统默认的外观以及黑马增送的JTattoo或者liquidInf
        UIManager.setLookAndFeel(MyLookAndFeel.JTATTOO_ACRYL);
        我这里下载了一个仿mac的jar,作者的访问地址如下:

DownLoad_BeautyEye

弹出提示

在做一些数据处理的时候可能出现错误,比如做一个简单的四则运算
那么输入的内容必定是数字
    此时可以设置文本栏只能输入数字
    或者输入其他内容点运算的时候弹出提示信息
明显的第二种方式用户体验会更好
这时候需要借助一个JOptionPane

窗体跳转

比如有个登录窗口,点击注册那么应该跳转到注册窗口
    最简单的实现,点击时设置登录窗口的显示为false
    并设置注册窗口的显示为true
    但是这样做并不好,这样其实是将窗口隐藏,内存中依然存在
    应该将登录窗口dispose,这个方法属于Window类,这时候这个窗体的资源将会被释放

Timer定时器

定时器是一个应用十分广泛的线程工具,可用于调度多个任务以后台线程的方式执行
在Java中采用Timer类与TimerTask类定义调度的功能
Timer类源于JDK3,TimerTask源于JDK3

阅读更多

Callable接口

Callable接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。
但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。
如果想在线程执行完毕之后获取一个结果,那么Callable接口是一个选择
与Runnable不同,这个接口开始于JDK5

阅读更多

线程池

程序启动一个新线程的成本是比较高的,因为涉及操作系统的交互.而使用线程池可以很好的提升性能
尤其在程序中要创建大量生存期很短的线程时,更应该考虑线程池的使用

阅读更多

等待唤醒机制

针对多个不同线程之间操作同一个数据的情况,被称为线程之间的通信.
而这个操作不但要考虑到线程的同步问题还有一个隐藏的问题
如果这些操作之间是有一定的顺序的,比如 A-->B-->C
那么就不应该是谁获得了执行权就执行谁,这时候java为我们提供了等待唤醒机制

阅读更多