——- android培训、java培训、期待与您交流! ———-
概述
- CLI:Commend Line User Interface(命令行用户接口)
- Dos命令行操作,需要记住各种指令,不便于用户的操作。
- GUI:Graphical User Interface(图形用户接口)
- 以图形的方式来显示计算机的操作界面,方便用户的使用。
- Java为GUI提供的对象都存在Java.Awt与Javax.Swing两个包中。
- Awt:需要调用本地系统方法来实现功能,属于重量级控件
- Swing:是在Awt的基础上建立的一套图形界面系统,其中提供了更多的逐渐,且完全又Java实现,增强了移植性,属于轻量级控件。
布局管理器
- 布局:容器中组件的排放方式,就是布局
- 常用的布局管理器:
- FlowLayout(流式布局管理器)
- 从左到右的顺序排放
- Panel默认的布局管理器
- BorderLayout(边界式布局管理器)
- 按东、南、西、北、中的方位排放
- Frame默认的布局管理器
- GridLayout(网格式布局管理器)
- 规矩的矩阵排放
- CardLayout(卡片式布局管理器)
- 选项卡
- GridBagLayout(网格包式布局管理器)
- 非规则的矩阵排放
- FlowLayout(流式布局管理器)
图形界面的建立与基本属性设置
- 常用方法摘要
- void setBounds(int x, int y, int width, int height)
移动组件并调整其大小。 x,y为设置窗体位置,width,height为设置窗体大小。 - void setSize(int width, int height)
调整组件的大小,使其宽度为 width,高度为 height。 - void setVisible(boolean b)
根据参数 b 的值显示或隐藏此 Window ,true则显示,false则隐藏 - void setLocation(int x, int y)
将组件移到新位置。 - void setLayout(LayoutManager mgr)
设置此容器的布局管理器
- void setBounds(int x, int y, int width, int height)
- 例
Frame f = new Frame("my win");
f.setBounds(200,300,500,400);
f.setLayout(new FlowLayout());
f.setVisible(true);
事件监听机制
- 作用:用于对各组件的操作事件进行监听,当该事件是监听器所监听的对象时,对该事件做出相对的处理。
- 事件监听机制的组成:
- 事件源(组件):Awt或Swing包中的图形化组件
- 事件(Event):每一个事件源都有自己特有的对应时间和共性事件
- 监听器(Listener):将可以触发某一事件的动作(不止一个)都已经封装到了监听器中
- 事件处理(引发事件后的处理方式)
- 事件监听机制流程图
窗体事件
- WindowListener:用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。
- 方法摘要
- void windowActivated(WindowEvent e)
将 Window 设置为活动 Window 时调用。 - void windowClosed(WindowEvent e)
因对窗口调用 dispose 而将其关闭时调用。 - void windowClosing(WindowEvent e)
用户试图从窗口的系统菜单中关闭窗口时调用。 - void windowDeactivated(WindowEvent e)
当 Window 不再是活动 Window 时调用。 - void windowDeiconified(WindowEvent e)
窗口从最小化状态变为正常状态时调用。 - void windowIconified(WindowEvent e)
窗口从正常状态变为最小化状态时调用。 - void windowOpened(WindowEvent e)
窗口首次变为可见时调用。
- void windowActivated(WindowEvent e)
- 方法摘要
- WindowAdapter:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法 - 例
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
Action事件
- ActionListener:用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。
- 方法摘要
- void actionPerformed(ActionEvent e)
发生操作时调用。
- void actionPerformed(ActionEvent e)
- 方法摘要
- 例
closeBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
鼠标事件
- MouseListener:用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。)
旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 MouseAdapter(仅重写所需的方法)。
然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法。
- 方法摘要
- void mouseClicked(MouseEvent e)
鼠标按键在组件上单击(按下并释放)时调用。 - void mouseEntered(MouseEvent e)
鼠标进入到组件上时调用。 - void mouseExited(MouseEvent e)
鼠标离开组件时调用。 - void mousePressed(MouseEvent e)
鼠标按键在组件上按下时调用。 - void mouseReleased(MouseEvent e)
鼠标按钮在组件上释放时调用。
- void mouseClicked(MouseEvent e)
- 方法摘要
- MouseAdapter:接收鼠标事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
鼠标事件使用户能够跟踪鼠标何时被按下、释放、单击、移动、拖动、何时进入一个组件、何时退出、何时滚动鼠标滚轮。
扩展此类可创建 MouseEvent(包括拖动和移动事件)或/和 MouseWheelEvent 侦听器,并针对所需事件重写方法。( - 例
b.addMouseListener(new MouseAdapter(){
int count = 1;
int clickCount = 1;
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入按钮" + count++ + "次");
}
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2)
System.out.println("鼠标双击"+ clickCount++ + "次");
}
});
键盘事件
- KeyListener:用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)。
然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。
- 方法摘要
- void keyPressed(KeyEvent e)
按下某个键时调用此方法。 - void keyReleased(KeyEvent e)
释放某个键时调用此方法。 - void keyTyped(KeyEvent e)
键入某个键时调用此方法。
- void keyPressed(KeyEvent e)
- 方法摘要
- KeyAdapter:接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
扩展此类即可创建 KeyEvent 侦听器并重写所需事件的方法 - 例
b.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
System.out.println(KeyEvent.getKeyText(e.getKeyCode())+":"+e.getKeyCode());
}
});
常用的GUI对象
Button
- 此类创建一个标签按钮。当按下该按钮时,应用程序能执行某项动作。
TextField
- TextField 对象是允许编辑单行文本的文本组件。
TextArea
- TextArea 对象是显示文本的多行区域。可以将它设置为允许编辑或只读。
MenuBar
- MenuBar类封装绑定到框架的菜单栏的平台概念。为了将该菜单栏与Frame 对象关联,可以调用该框架的 setMenuBar 方法。
Menu
- Menu 对象是从菜单栏部署的下拉式菜单组件。
MenuItem
- 菜单项,菜单中的所有项必须属于类 MenuItem 或其子类之一
Dialog
- Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入
FileDialog
- FileDialog 类显示一个对话框窗口,用户可以从中选择文件。
由于它是一个模式对话框,当应用程序调用其 show 方法来显示对话框时,它将阻塞其余应用程序,直到用户选择一个文件。
例
class myWinDemo{
Frame myWin;
MenuBar mb;
Menu m;
MenuItem openItem;
FileDialog fd;
public myWinDemo(){
myWin = new Frame("MyWin");
myWin.setBounds(200,300,500,400);
myWin.setLayout(new FlowLayout());
myWin.add(new TextField(40));
myWin.add(new Button("确定"));
myWin.add(new TextArea());
mb = new MenuBar();
m = new Menu("文件");
openItem = new MenuItem("打开");
m.add(openItem);
mb.add(m);
myWin.setMenuBar(mb);
fd = new FileDialog(myWin,"打开",FileDialog.SAVE);
myEvent();
myWin.setVisible(true);
}
public void myEvent(){
openItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
fd.setVisible(true);
}
});
}
}