---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
第二十四天(GUI)
一,GUI
GUI:Graphical User Interface(图形用户接口)
CLI:Command Line User Interface(命令行用户接口)
二,java提供的包
java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件(跨平台性不太好依赖系统性比较强)
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现,增强了移植性,属轻量级控件(依赖系统不太高)
三。体系
Component:
/ \
/ \
/ \
Container-----||------Button按钮
|--Panel面板 |------Label标签
|--Window窗口 |------Checkbox复选框
|---Frame框架 |------TextComponent 文本组件
|---Dialog对话框 |------TextArea文件区
|----FileDialog文件对话框|------TextField文件框
注:Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来
四。布局
1,容器中的组件的排放方式,就是布局
2,常见的布局管理器:
FlowLayout(流式布局管理器):从左到右的顺序排列 。Panel默认的布局管理器
BorderLayout(边界布局管理器):东,南,西,北,中 Frame默认的布局管理器。如果没有指定位置,会以最大形式来添充窗体
GridLayout(网格布局管理器):规则的矩阵
CardLayout(卡片布局管理器):选项卡
GridBagLayout(网格包布局管理器):非规则的矩阵
坐标式布局
如果想在一个窗体上加入多种的布局时,可以在此窗体上添加面板,然后改变面板的布局方式就可以了
五。Frame类
构造函数 :
Frame(String title) 构造一个新的、最初不可见的、具有指定标题的 Frame 对象。
方法:
void setMenuBar(MenuBar menubar):设置菜单栏
void setVisible(boolean b) :设置窗体是否可见
void setSize(int length(横),int width(纵));设置窗体大小
void setLocation(x,y):设置窗体的位置距窗体顶点的大小
void setBounds(x,y,width,heigth):设置窗体的位置和大小
void setLayout(布局管理器对象):设置此窗体的布局
void add(Component com):添加组件
六。Button类
构造方法:
Button(String title)建立一个带有名字的按钮
七。创建图形化界面的思想:
1.创建frame窗体
2,对窗体进行基本的设置 比如:大小,位置,布局
3,定义组件
4,将组件通过窗体的add方法添加到窗体中
5,让窗体显示出来
八,事件监听机制
事件监听机制的特点:
1,事件源 :就是awt包或者swing包中的那些图形界面组件
2,事件 :每一个事件源都有自己特有的对应事件和共性事件
3,监听器 :将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中
4,事件处理方式
事件源,事件,监听器,在java中都已经定义好了,直接获取其对象来用就可以了,我们要做的事就是对产生的动作进行处理
九。窗体事件(抽象类没有抽象方法WindowApadter,不让其创建对象。需要复写其方法)
void addWindowListener(WindowListener l) 添加指定的窗口侦听器,以从此窗口接收窗口事件。
因为WindowListener的子类 WindowAdapter已经实现了WindowListener接口,并覆盖了其中的所有方法。
那么我只要继承WindowAdapter覆盖我需要的方法即可
十。选择监听器的方法:
通过关闭窗体示例了解到,想要知道那个组件具备什么样的特有监听器,需要查看该组件对象的功能
十一,监听器
Button addActionListener(ActionListener al) 少数没有适配器接口的适配器 只有一个actionPerformed(ActionEvent ae)方法(适配器的出现就是方便创建对象,覆盖方法)
Frame addWindowListener(WindowListener wl) 传入WindowListener的子类WindowAdapter(适配器)
addKeyListener(KeyListener kl):键盘监听器
addMouseListener(MouseListener ml):鼠标监听器
注:当Button添加活动监听和鼠标监听时,会先执行鼠标监听器内的动作,活动监听也可以通过键盘来操作
十二 常用方法:
WindowAdapter:
void windowClosing(WindowEvent e); 用户试图从窗口的系统菜单中关闭窗口时调用
ActionListener:
void actionPerformed(ActionEvent e);发生操作时调用。
MouseListener:
void mouseClicked(MouseEvent e)鼠标按键在组件上单击(按下并释放)时调用。
MouseEvent:
public int getClickCount()返回与此事件关联的鼠标单击次数。 返回:单击次数的整数值
KeyListener:
void keyPressed(KeyEvent e)按下某个键时调用此方法。有关按下键事件的定义,请参见 KeyEvent 的类描述。
KeyEvent:
public char getKeyChar() 返回与此事件中的键关联的字符。
public int getKeyCode() 返回与此事件中的键关联的整数 keyCode。
从类 java.awt.event.InputEvent 继承的方法:
public boolean isAltDown()返回 Alt 修饰符在此事件上是否为 down。 检查是否按下Alt键
public boolean isControlDown()返回 Control 修饰符在此事件上是为 down 检查是否按下Ctrl键
public boolean isShiftDown()返回 Shift 修饰符在此事件上是否为 down。 检查是否按下Shift键
public void consume()使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件。
TextComponent中的方法:
public String getText()返回此文本组件表示的文本。默认情况下,此文本是一个空字符串。 返回:此 TextComponent 的值
public void setText(String t)将此文本组件显示的文本设置为指定文本。 参数:t - 新文本;如果此参数为 null,则将文本设置为空字符串 ""会覆盖原来的数据
TestArea中的方法:
public void append(String str)将给定文本追加到文本区的当前文本。 注意,传递 null 或不一致的参数是无效的,并且将导致不确定的行为。 参数:str - 要追加的非 null 文本
十四。菜单
MenuBar:菜单栏或菜单条
Menu:菜单
MenuIiem:菜单项
关系:MenuBar可以添加Menu,Menu可以添加MenuItem
十五,jar包双击执行
1,命令:
jar -cvfm jar包的名称 配置文件 要打包的文件名(.class文件所有的包名 )
2,步骤:
1,新建立一个.txt文件在文件内写入你要运行的类名:Main-Class:空格 包名.类型(一定要回车固定格式)保存
2,使用命令进行打包。
注:没有空格会发生IOException提示如下:
F:\javaDocument>jar -cvfm fileOperate.jar main.txt fileOpen
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:410)
at java.util.jar.Manifest.read(Manifest.java:199)
at java.util.jar.Manifest.<init>(Manifest.java:69)
at sun.tools.jar.Main.run(Main.java:172)
at sun.tools.jar.Main.main(Main.java:1177)
如果没有回车,,配置文件是无法加载进行去的,jar包无法双击执行
如果打不开可能是文件没有进行关联,wind7中jar文件的关联请参考:http://bbs.csdn.net/topics/350020409