------- android培训、java培训、期待与您交流! ----------
until22
GUI
1.概述
2.布局
3.Frame
4.时间监听机制
5.窗体时间
6.Action时间
7.鼠标时间
8.键盘时间
9.练习
10.对话框Dialog
11.菜单练习-打开和保存文件
12.jar包双击执行
概述
GUI(Graphical User Interface)图形用户接口!
使用的包有AWT和AWING包!
CLL(Command line User Interface)命令行用户接口
常见DOS命令行操作!
AWT包:抽象窗口工具包(调用本地窗口!依赖平台)
Swing包:在AWT基础上,建立一套图形界面系统,提供更多组件,而且完全由java实现,增强了移植性!轻量级控件!
Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
布局
|
|
|
FlowLayout Panel默认布局管理器 | 流式布局管理器 | 默认居中,组件从左到右排列 |
BorderLayout Fram默认布局管理器 | 边界管理器 | 默认居中 |
GirdLayout | 网格布局管理器 | 规则的矩阵 |
GardLayout | 卡片布局管理器 | 选项卡 |
GirdBagLayout | 网格包布局管理器 | 非规则矩阵 |
Frame
Container容器,是一个特殊的组件!该组件中可以通过add方法
添加其它组件进来!(添加对象进来。)
简单了解窗体方法:
需求 | Code | 注解 |
显示Frame | setVisible(true) |
|
设置Frame长宽 | setSize(len,width) |
|
设置frame出现的xy | setLocation(len,width) |
|
设置布局管理器 | setLayout(new FlowLayout) | 设置了流式布局管理 |
添加对象 | 使用add就可以了 |
|
五个小步骤:
事件监听机制
事件监听实现步骤
(1)确定事件源(容器或组件)
(2)通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。该方法中接收XXXListener的子类对象,
或者XXXListener的子类XXXAdapter的子类对象。(一般用匿名内部类来表示。)
(3)在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
(4)事件触发后会把事件打包成对象传递给该变量。(其中包括事件源对象。通过getSource()或者,getComponent()获取。)
窗体事件
Action事件
package until_22;
import java.awt.*;
import java.awt.event.*;
public class GUI_Demo1 {
public static void main(String[] args) {
/*
* Fram f = new Fram
* f.addWindowListener(new WindowAdapter()
* {
* public void windowClosing(WindowEvent e)//关闭窗体
* {
* System.exit(0);
* }
* public void windowActivated(WindowEvent e)
* {
* //当窗体被前置的时候触发
* }
* public viod windowOpened(WindowEvent e)
* {
* //窗体被打开的时候触发
* }
* }
*/
}
}
class Demo{
private Frame f;
private Button b;
Demo()
{
init();
}
public void init()
{
f = new Frame("Frame");
b = new Button("Button");
f.setBounds(200,200,500,500);
f.setLayout(new FlowLayout());
f.add(b);
myEvent();
f.setVisible(true);
}
public void myEvent()
{
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
}
鼠标事件
mouseClicked 鼠标点击事件
mouseEntered 鼠标进入组件调用
mouseExited 鼠标离开组件调用
mousePressed 鼠标按键在组件上按下时调用
mouseReleased 鼠标按钮在组件上释放时调用
b.addMouseListener(new MouseAdapter()
{
private int count = 1;
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标进入"+count++);
}
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount()==2)
{
System.out.println("双击了");
}
}
});
键盘事件
ta.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e)
{
//可以限制文本里面的输入信息!可以考虑使用正则表达式
int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9))
{
System.out.println("输入纯数字");
e.consume();//如果输入非法!输入内容不显示在文本中!
}
}
});
练习
package until_22;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
public class GUI_Practice {
public static void main(String[] args) {
new Demo_1();
}
}
class Demo_1
{
private Frame f;
private TextField tf;
private Button but;
private TextArea ta;
Demo_1()
{
init();
}
public void init()
{
f = new Frame("Frame");
f.setBounds(300,200,500,500);//距离左边,上边,长,宽
f.setLayout(new FlowLayout());
tf = new TextField(50);
but = new Button("button");
ta = new TextArea();
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
public void myEvent()
{
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String s = tf.getText();
File dir = new File(s);
if(dir.exists() && dir.isDirectory())
{
ta.setText("");
String[] str = dir.list();
for(String st : str)
{
//ta.setText(st+"\r\n");
ta.append(st+"\r\n");
}
}
}
});
}
}
对话框Dialog
Dialog d = new Dialog(Frame f,String information,boolean true);
为true!~窗口必须处理!不然无法点击别的!
如同窗体那样对待就可以了!
菜单
弄清楚下面控件关系就可以了!
menu:1.MenuBar 菜单栏
2.Menu 菜单
3.MenuItem 菜单项
package until_22;
import java.awt.*;
import java.awt.event.*;
public class GUI_Menu {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo_2();
}
}
class Demo_2
{
private Frame f;
private Menu menu;
private Menu menu_1;
private MenuItem mi;
private MenuBar mb;
Demo_2()
{
init();
}
public void init()
{
f = new Frame();
f.setBounds(200,300,600,600);
f.setLayout(new FlowLayout());
mb = new MenuBar();
menu = new Menu("File");
menu_1 = new Menu("File_1");
mi = new MenuItem("打开");
menu.add(menu_1);
menu_1.add(mi);
mb.add(menu);
f.setMenuBar(mb);
myEvent();
f.setVisible(true);
}
public void myEvent()
{
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
练习-打开和保存文件
jar包双击执行