首页 > 代码库 > 9、GUI

9、GUI

Java不用来写桌面应用(Eclipse是java写的),开发网站
 
图形界面(用得少)
 
java.awt:用到的图形类都是依赖系统图形库,抽象窗口工具集
javax.swing:用到 的图形类都是sun自己实现的
技术分享
在java中所有的图形类都被称为组建类
组件(compomet)的类别
----------| 容器
----------|非容器组件
 

一、组件

1、JFrame框架

带边界的窗体是一个容器
注意 :需要调用setVisible(true)方法后才会显示框架

1、方法

(1)设置JFrame的宽度和高度

java.awt.Window.setSize(int width, int height);

(2)JFrame显示在屏幕中间,如果 cnull,则此窗口将置于屏幕的中央

java.awt.Window.setLocationRelativeTo(Component c);

(3)关闭JFrame程序

javax.swing.JFrame.setDefaultCloseOperation(int operation);  // EXIT_ON_CLOSE

(4)添加组件

java.awt.Container.add(Component comp);

 

2、JDialog 对话框

(1)创建对话框

JDialog(Dialog owner, String title, boolean modal);

 

3、JOptionPane 对话框

(1)消息对话框
(2)警告对话框
(3)错误对话框
(4)输入对话框
(5)确认对话框
JOptionPane.showMessageDialog(null, "错误信息提示", "标题", JOptionPane.INFORMATION_MESSAGE); 

 

4、面板(Panel)

面板也是一个容器的组件,可以在上面添加

注意:面板不能单独使用,必须在顶层窗口中使用

 

5、常用组件

(1)JButtion 普通按钮

按钮Button是点击时触发动作事件的组件

(2)JRadioButton 单选按钮

单选按钮,可以让用户从一组选项中选择一个单一条目(例如性别)

(3)JCheckBox 复选框

(4)JLabel 标签

(5)JTextField 文本域

(6)JTextArea 文本区域

(7)JComboBox 组合框

(8)JList 列表框

9JmenuBar 菜单条

JMenu菜单、JMenultem菜单项

菜单条(MenuBar)中包含菜单(Menu),菜单中中包含菜单项(MenuItem),注意添加的顺序

二、 布局管理器

1、 FlowLayout 流式布局

Jpanel容器默认的布局管理器流式布局,按照组件添加的顺序,从左到到右将组件排列在容器中.当放满一行,就开始新的一行.在FlowLayout有3个常量FlowLayout可以指定组件的对齐方式

(1)获取水平间隙

int getHgap() ;

(2)设置水平间隙

void setHgap(int hgap) ;

(3)创建布局管理器

FlowLayout(int align, int hgap, int vgap);  // 创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙,默认五个像素

 

2、GridLayout 网格布局

GridLyaout是以网格形式管理组件的.组件按照他们添加的顺序从左到右排列

1、规则:

1.行数和列数可以是0但是不能两者都为0

2.如果一个为0另外一个不为0,那么不为0的行或列的大小就是固定的,为0的行或者列有布局管理器动态决定

 

2、构造方法
GridLayout(int rows, int cols, int hgap, int vgap);  //  创建具有指定行数和列数,水平间隔,垂直间隔的网格布局

 

3、方法

(1)行数

int getRows();

(2)列数

int getColumns() ;  // 默认值是1

(3)水平间距

int getHgap() ;  // 默认值是0

(4)垂直间距

int getVgap();

set方法设置

 

3、BorderLayout边框布局

JFrame 容器默认的布局管理器是边框布局.该管理器将容器非为东西南北中5个区域.我们使用add(Component,index)方法可以将组件添加进到BorderLayout中,index是一个常量,有5个值

 

三、Java事件监听机制

1、事件和事件源

能够创建一个事件并触发该事件的组件称为源对象(按钮能够点击, 那么按钮就是一个源对象,按钮被点击就是一个事件)

一个事件是事件类的实例对象。事件类的根类是java.util.EventObject

事件对象包含事件相关的属性,可以使用EventObject类中的实例方法getSource获得事件的源对象

 

2、 监听器

Java中,对象表示的每个事件都是由java.util中EventObject类的子类

 

3、事件处理

Java对组件都有对应的事件监听器,和添加事件监听器方法

 

4、 窗口事件

Window 对象是一个顶层窗口。窗口(Window)对应的事件叫做窗口事件(WindowEvent),任何窗口(Window)以及窗口的子类都可能触发窗口事件

(1)Window添加窗口事件(WindowEvent)监听器的方法

void addWindowListener(WindowListener l)  // 添加指定的窗口侦听器,以从此窗口接收窗口事件

监听Window窗口事件(WindowEvent)的监听器:WindowListener

用于接收窗口事件的侦听器接口。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法

(2)WindowListener接口中定义的方法

 1 抽象方法:
 2 void windowActivated(WindowEvent e) 
 3           激活窗口
 4  void windowClosed(WindowEvent e) 
 5           关闭窗口
 6  void windowClosing(WindowEvent e) 
 7           正在关闭窗口
 8  void windowDeactivated(WindowEvent e) 
 9           变为非活动窗口
10  void windowDeiconified(WindowEvent e) 
11           还原窗口    
12  void windowIconified(WindowEvent e) 
13           最小化窗口 
14 void windowOpened(WindowEvent e) 
15            打开窗口 

 

5、 监听器接口适配器

WindowListener接口中的方法都是抽象的,所以即使程序中不想关注某些事件,但是还是要实现所以的方法,比较麻烦,为了方便起见,Java提供了一个针对WindowListener接口的实现类,该类中把WindowListener接口中的方法全部实现,只不过方法体都为空

 

6、鼠标键盘事件

MouseEvent对象捕获

Java对鼠标事件提供了MouseListener 监听器接口,可以监听鼠标的按下,释放,输入,退出和点击动作。

按键事件可以利用键盘来控制和执行一些动作,如果按下、释放一个键就会触发按键事件。KeyEvent对象可以捕获按键的按下放开和敲击。KeyEvent提供了getkeyChar 来获取按键对应的字符。

char getKeyChar() ;  // 返回与此事件中的键关联的字符

Java提供了KeyListener监听器接口来监听按键事件

1 void keyPressed(KeyEvent e)   //  按下某个键时调用此方法。 
2 void keyReleased(KeyEvent e)   //   释放某个键时调用此方法。 
3 void keyTyped(KeyEvent e)   //  键入某个键时调用此方法。

 

 

一:确定事件源(容器或组件)

二:注册监听器   

  通过事件源对象的addXXXListener()方法将监听器对象注册到该事件源上。

三:监听器对象

    注册监听器时,需要指定监听器对象。

以参数的形式进监听器对象传递给addXXXListener()

监听器对象是XXXListener的子类对象或者XXXAdapter的子类对象。

   监听器对象一般用匿名内部类来表示。(简化书写)

   在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。

   事件触发后会把事件打包成对象传递给该变量。(其中包括事件源对象。通过getSource()或者getComponent()获取。)

四:常见的事件监听器

WindowListener        主要用于监听窗口

ActionListener          主要用于用监听组件对象的单击动作

MouseListener          鼠标监听器

KeyListener               监听键盘

五:常见的事件适配器

WindowAdapter

MouseAdapter

KeyAdapter

 

9、GUI