6. GUI
来源:互联网 发布:java视频教程下载 编辑:程序博客网 时间:2024/06/06 02:40
1.GUI 图形用户界面:
Graphical User Interface(图形用户接口)
CUL 命令行界面:
Command line User Interface(命令行用户接口)
如:Dos命令行操作。
Java为GUI提供的对象都存在java.awt 和 java.swing 两个包中。
(Java做图形化界面相对较少,得先装虚拟机。一般用C++等,Windows内置了C++的解析器。)
2.awt , swing包
1.java.awt: Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属于重量级控件。2.javax.swing: 在AWT的基础上,建立一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。
3.AWT
(1)继承关系图:
api:
component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。
Component 类是与菜单不相关的 Abstract Window Toolkit 组件的抽象超类。还可以直接扩展类 Component 来创建一个轻量级组件。轻量级组件是与本机不透明窗口不相关的组件。
类 Container
一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件。
添加到容器中的组件放在一个列表中。列表的顺序将定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
(2)布局管理器:
坐标式布局。
4.Frame演示:
public class AWTDemo { public static void main(String[] args) { Frame f =new Frame("my frame");// f.setSize(500, 400); //像素值// f.setLocation(400, 200); //坐标位置 f.setBounds(400, 200, 500, 400); f.setLayout(new FlowLayout()); //设置流式布局,默认上居中 Button but =new Button("一个按钮"); f.add(but); //将按钮放在窗体中。窗体默认布局是边界式布局,默认窗口全占 f.setVisible(true); }}
5.事件监听机制 组成:
1.事件源(组件):小强2.事件(Event):被揍3.监听器(Listener):保镖4.事件处理(引发事件后的处理方式):还击
示例1: 添加窗口监听器Frame.addWindowListener(WindowListener w)WindowListener接口的(适配器类)抽象子类:WindowAdapterpublic class AWTDemo { public static void main(String[] args) { Frame f =new Frame("my frame");// f.setSize(500, 400); //像素值// f.setLocation(400, 200); //坐标位置 f.setBounds(400, 200, 500, 400); f.setLayout(new FlowLayout()); //设置流式布局,默认上居中 Button but =new Button("一个按钮"); f.add(but); //将按钮放在窗体中。窗体默认布局是边界式布局,默认窗口全占 f.addWindowListener(new WindowAdapter(){ //添加监听器,参数是WindowListener接口对象,即继承它的抽象子类WindowAdapter //然后重写要用到的监听方法。 @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); // System.out.println("closing......"); System.exit(0); } }); //WindowListener接口的抽象子类WindowAdapter实现了该接口的所有方法,但是没有抽象方法, //目的是为了方便创建监听器对象。继承它覆盖其中一个方法就可以了 f.setVisible(true); }}
示例2:添加按钮监听器Button.addActionListener(ActionListener a)ActionListener接口只有一个抽象方法,直接实现。public class AWTDemo { public static void main(String[] args) { Frame f =new Frame("my frame");// f.setSize(500, 400); //像素值// f.setLocation(400, 200); //坐标位置 f.setBounds(400, 200, 500, 400); f.setLayout(new FlowLayout()); //设置流式布局,默认上居中 Button but =new Button("退出"); f.add(but); //将按钮放在窗体中。窗体默认布局是边界式布局,默认窗口全占 //在按钮上加上一个监听。 but.addActionListener(new ActionListener(){ //添加按钮监听器,参数是ActionListener接口对象,它只有一个抽象方法,所以没有适配器类, //直接实现这个接口,然后实现抽象方法。 @Override public void actionPerformed(ActionEvent e) { //事件和事件对象 //事件发生时事件对象自动返回 System.exit(0); //事件处理 } }); f.addWindowListener(new WindowAdapter(){ //添加窗口监听器,参数是WindowListener接口对象,即继承它的(适配器类)抽象子类WindowAdapter //然后重写要用到的监听方法。 @Override public void windowClosing(WindowEvent e) { //事件和事件对象 //事件发生时事件对象自动返回 super.windowClosing(e); // System.out.println("closing......"); System.exit(0); //事件处理 } }); //WindowListener接口的(适配器类)抽象子类WindowAdapter实现了该接口的所有方法,但是没有抽象方法, //目的是为了方便创建监听器对象。继承适配器类覆盖其中一个方法就可以了 f.setVisible(true); }}
6.鼠标事件,窗口事件:
public class MouseAndKeyDemo { private Frame f; private TextField tf; private Button but; public MouseAndKeyDemo(){ init(); } private void init() { f = new Frame("演示鼠标和键盘监听"); f.setBounds(400, 200, 500, 400); f.setLayout(new FlowLayout()); tf = new TextField(15); but = new Button("一个按钮"); f.add(tf); f.add(but); myEvent(); f.setVisible(true); } private void myEvent() { //给文本框添加键盘监听 tf.addKeyListener(new KeyAdapter() { private int count = 1; @Override public void keyPressed(KeyEvent e) { super.keyPressed(e);// if(e.getKeyCode() == KeyEvent.VK_ENTER){ //回车// tf.setText(""+count++);// }// if(e.isControlDown() &&( e.getKeyCode() == KeyEvent.VK_ENTER)){ //ctrl+回车// tf.setText(""+count++);// }// int code = e.getKeyCode(); if(!(code>=KeyEvent.VK_0&& code<=KeyEvent.VK_9)){ e.consume();//不会按照默认的方式,由产生此事件的源代码来处理此事件。 System.out.println("必须是数字!"); } } }); //窗口退出事件 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(0); } }); //在按钮上添加一个鼠标监听事件(当鼠标监听和按钮监听同时存在时,鼠标监听优先) but.addMouseListener(new MouseAdapter() { private int count = 1; @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); if(e.getClickCount()==2){ //双击 tf.setText(""+ count++); } } }); } public static void main(String[] args) { new MouseAndKeyDemo(); }}
7.Swing演示,安装GUI插件jigloo:
8.菜单
阅读全文
0 0
- 6. GUI
- 6.python GUI 引库报错
- GUI
- GUI
- GUI+
- GUI
- GUI
- GUI
- gui
- gui
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- 【SSD】用caffe-ssd框架MobileNet网络训练自己的数据集
- Android项目代码混淆
- Qt网络编程之QNetworkReply
- 高级Java程序员值得拥有的10本书
- LeetCode 322 Coin Change
- 6. GUI
- 为什么ping不通某网站,但是却可以访问该网站?
- mysql索引总结
- StringBuilder String string.Concat 字符串拼接速度
- 前百度移动框架总工程师分享iOS开发
- CSS3的REM设置字体大小
- iOS 与 JS 交互开发知识总结
- Android 自定义带动画的dialog
- Octave中find函数用法