------- android培训、java培训、期待与您交流! ----------
GUI(图形用户界面)
Graphical User Interface (图形用户接口)
用图形的方式,来显示计算机操作的界面,这样更方便更直观
CLI
Command line User Interface(命令行用户接口)
就是常见的Dos命令行操作
需要记忆一些常用的命令,操作不直观
Awt与Swing
java.Awt: Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能.属重量级控件.(比较依赖于平台)
java.Swing: 在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属轻量级控件.
Container:
为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来.
容器中的组件的排放方式,就是布局.
常见的布局管理器:
FlowLayout(流式布局管理区)
*从左到右的顺序排列
*Panel默认的布局管理器
BoraderLayout(边界布局管理器)
*东,南,西,北,中
*Frame默认的布局管理器.
GridLayout(网格布局管理器)
*规则的矩阵
CardLayout(卡片布局管理器)
*选项卡
GridBagLayout(网格包布局管理器)
*非规则的矩阵
常用方法:
setSize(x,y)设置大小
setLocation(x,y)设置距离远点的位置
setLayout(Layout)设置布局管理器
创建图形化界面的步骤:
1.创建frame窗体.
2.对窗体进行基本设置
比如大小,位置,布局
3.定义组件
4.将组件通过窗体的add方法添加到窗体中.
5.让窗体显示,通过setVisible();
事件监听机制组成
事件源(组件)
*就是AWT包或者Swing包中的那些图形界面组件
事件(Event)
*每一个事件源都有自己特有的对应事件和共性事件
监听器(Listener)
*将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中.
##以上三者,在java中都已经定义好了,直接获取其对象来用就可以了
我们要做的事情就是,就是对产生的动作进行处理.
事件处理(引发事件后处理方式)
事件监听
1.确定事件源(容器或组件)
2.通过事件源对象的addXXXListensr()方法将监听器注册到该事件源上.
该方法中接受XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象.
**一般用匿名内部类来表示
3.在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收.
4,事件触发后会把事件打包成对象传递给该变量(其中包括事件源对象,通过getSource()或者,getComponent()获取)
综合示例:列出输入目录的内容,如果不存在,就提示错误
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class test
{
private Frame f;
private TextField tf;
private Button but;
private TextArea ta;
private Dialog dl;
private Label lb;
private Button okbut;
test(){
init();//加载窗口
}
public void init(){//窗口初始化
f = new Frame("显示文件夹文件");//定义主窗体
f.setBounds(500,400,500,400);
tf = new TextField("请输入目录路径",50);//定义输入框
but = new Button("转到");//定义转到按钮
but.setSize(50,100);
ta = new TextArea(20,60);//定义显示文本区
f.setLayout(new FlowLayout());
f.add(tf);
f.add(but);
f.add(ta);
f.setVisible(true);
/**/
dl = new Dialog(f,"错误_my",true);//定义错误提示窗口
dl.setBounds(600,500,300,200);
dl.setLayout(new FlowLayout());
okbut = new Button("确定");//错误提示窗口确定按钮
okbut.setSize(400,200);
lb = new Label();//定义错误提示窗口标签
/**/
myEvent();//加载监听器
}
public void myEvent(){
//鼠标点击事件
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
getDir();
}
});
//错误提示窗口关闭事件
dl.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dl.setVisible(false);
}
});
错误提示窗口确定按钮事件
okbut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
dl.setVisible(false);
}
});
//主窗口关闭事件
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//鼠标点击输入区事件
tf.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
tf.setText("");
}
});
//文本区键盘回车事件
tf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ENTER)
getDir();
}
});
}
public void getDir(){//遍历目录
String dirPath = tf.getText();
//tf.setText("");
File dir = new File(dirPath);
if(dir.exists() && dir.isDirectory()){//如果目录存在且是文件夹,就列出内容
ta.setText("");
String[] names = dir.list();
for(String name : names){//将内容输出到显示区
ta.append(name+"\r\n");
}
}
else{
lb.setText("您所输入的目录找不到'"+(dir.toString())+"'.请确认路径是正确的,并重新输入");
lb.setAlignment(Label.CENTER);
dl.add(lb);
dl.add(okbut);
dl.setVisible(true);
}
}
public void duqu(String s){
File f = new File(s);
for(String st : f.list())
{
ta.append(st);
ta.append("\r\n");
}
}
public static void main(String[] args){//主函数
new test();
}
}
运行效果如下:
菜单栏
MenuBar:横的主菜单
Menu:竖着的分菜单
MenuItem:竖菜单中的条目