------- android培训、java培训、期待与您交流! ----------
一 GUI(图形用户界面)
1 GUI 图形用户界面,用图形的方式显示计算机的界面,方便直观
2 CLI 命令行,需要记住一些命令,比较麻烦
3 java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
(1)Awt:需调用系统底层资源,有点依赖平台,属重量级控件。
(2)Swing:基于Awt,提供了更多的组件,完全由java实现。属轻量级控件
Container 是一个特殊的组件,他可以添加其他组件
4 布局,组件的排放方式。几种常见的布局管理器:
(1)FlowLayout,流式布局,按照从左到右排放,默认是居中的。Pannel的默认布局
(2)BoarderLayout,边界式布局,东南西北中排放,默认是居中的。Frame的默认布局
(3)CardLayout,卡片式布局,选项卡
(4)GridLayout,网格式布局。规则的矩阵
(5)GridBagLayout,网格包式布局,非规则的矩阵
5 事件监听机制
(1)事件源:就是awt包和swing包中的组件
(2)事件:每个事件源都有自己对应的事件和共性事件
(3)监听器:将可以触发某一个事件的某些动作封装到监听器中
(4)事件处理:针对产生的动作进行处理。
二 组件
1 Frame 窗体
(1)构造方法:
Frame f=new Frame("窗体");//创建窗体并命名
(2)方法摘要:
setSize(int len,int wide);//设置窗体长和宽大小
setLocation(int len,int wide);//设置窗体位置
setLayout(FlowLayout f);//设置窗体布局
add(PopupMenu popup);//在窗体里添加组件
setVisible(boolean b);设置窗体显示状态
2 Button 按钮
(1)构造方法:
Button b=new Button("按钮");//创建按钮并命名
(2)例子:创建窗体并添加按钮组件。添加窗体关闭事件和按钮关闭事件。
代码:
import java.awt.*;
import java.awt.event.*;
class AwtDemo
{
public static void main(String[] args)
{
//创建一个窗体,并给窗体定个标题
Frame f=new Frame("我的窗体");
//设置窗体大小以及距离屏幕位置
f.setSize(700,600);
f.setLocation(300,100);
//设置窗体的布局为流式布局,默认是边界式布局
f.setLayout(new FlowLayout());
//创建一个按钮,并起个名字
Button b=new Button("退出");
//将按钮添加到窗体中
f.add(b);
//添加窗口监听器
f.addWindowListener(new WindowAdapter()
{
//窗口关闭事件
public void windowClosing(WindowEvent e)
{
//处理方法
System.exit(0);//退出程序
}
});
//添加按钮监听器
b.addActionListener(new ActionListener()
{
//按钮活动事件
public void actionPerformed(ActionEvent e)
{
//处理方法
System.exit(0);//退出程序
}
});
//显示窗体
f.setVisible(true);
}
}
3 TextArea 文本区域
4 TextField 文本框
5 Dialog 对话框
6 Label 标签
举例:模拟一个列出指定目录下的文件名称
代码:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class AwtTest
{
private Frame f;//窗体/定义
private TextField tf;//定义文本框
private Button b;//定义按钮
private TextArea ta;//定义文本区域
private File fil;//定义文件
private Dialog d;//定义对话框
private Label lab;//定义标签
private Button ok;//定义按钮
AwtTest()
{
init();//初始化
}
public void init()
{
//创建窗体并设置大小和布局
f=new Frame("我的窗口");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
//创建文本区域、文本对话框
tf=new TextField(70);
b=new Button("转到");
ta=new TextArea(30,80);
//创建对话框并设置布局和大小
d=new Dialog(f,"提示信息",true);
d.setBounds(400,200,300,200);
d.setLayout(new FlowLayout());
//创建标签和确定按钮
lab=new Label();
ok=new Button("确定");
//在对话框中添加标签和确定按钮
d.add(lab);
d.add(ok);
//在窗体添加文本框、按钮、文本区域
f.add(tf);
f.add(b);
f.add(ta);
//添加时间
event();
//设置窗口显示
f.setVisible(true);
}
public void event()
{
//在确定按钮添加键盘监听器
ok.addKeyListener(new KeyAdapter()
{
//键盘按下事件
public void keyPressed(KeyEvent e)
{
//如果按下ENTRY键对话框就关闭
if(e.getKeyCode()==KeyEvent.VK_ENTER)
d.setVisible(false);
}
});
//在文本框添加键盘监听器
tf.addKeyListener(new KeyAdapter()
{
//键盘按下事件
public void keyPressed(KeyEvent e)
{
//如果按下ENTRY键调用show方法
if(e.getKeyCode()==KeyEvent.VK_ENTER)
show();
}
});
//在确定按钮添加键盘监听器
ok.addActionListener(new ActionListener()
{
//键盘按下事件
public void actionPerformed(ActionEvent e)
{
//对话框关闭
d.setVisible(false);
}
});
//在对话框添加窗口监听器
d.addWindowListener(new WindowAdapter()
{
//窗口关闭事件
public void windowClosing(WindowEvent e)
{
//窗口关闭
d.setVisible(false);
}
});
//在转到按钮添加活动监听器
b.addActionListener(new ActionListener()
{
//按钮活动事件
public void actionPerformed(ActionEvent e)
{
//调用show方法
show();
//System.out.println(file);
}
});
//在窗体添加监听器
f.addWindowListener(new WindowAdapter()
{
//窗体关闭事件
public void windowClosing(WindowEvent e)
{
//程序退出
System.exit(0);
}
});
}
public void show()
{
//先清空文本区域内容
ta.setText("");
//获取文本框内容并封装成文件对象
String file=tf.getText();
fil=new File(file);
//判断文件是否是目录并且文件存在,条件满足
if(fil.exists() && fil.isDirectory())
{
//变量目录下的文件并添加到文本区域中
String[] files=fil.list();
for(String name: files)
{
ta.append(name+"\r\n");
}
}
//条件不满足
else
{
//让对话框显示并给出提示
String info="您输入:"+file+"不正确,请重输";
lab.setText(info);
d.setVisible(true);
}
}
public static void main(String[] args)
{
new AwtTest();
}
}
7 MenuBar 菜单栏
8 Menu 菜单
9 MenuItem 菜单条
例子:模拟一个记事本软件
代码:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyJishibenDemo
{
private Frame f;//定义窗体
private MenuBar bar;//定义菜单栏
private Menu menu;//定义菜单
private MenuItem open,save,exit;//定义打开保存退出三个菜单条
private TextArea ta;//定义文本区域
private FileDialog opendia,savedia;//定义文件对话框
private File f1;//定义文件
MyJishibenDemo()
{
init();//初始化
}
public void init()
{
//初始化窗体
f=new Frame("我的记事本");
f.setBounds(300,200,500,400);
//初始化菜单栏,菜单,菜单条目
bar=new MenuBar();
menu=new Menu("文件");
open=new MenuItem("打开");
save=new MenuItem("保存");
exit=new MenuItem("退出");
//初始化文本区域
ta=new TextArea();
//初始化文件对话框
opendia=new FileDialog(f,"我要打开",FileDialog.LOAD);
savedia=new FileDialog(f,"我要保存",FileDialog.SAVE);
//在窗体添加菜单栏,在菜单栏添加文件菜单
//在文件菜单下添加打开,保存,退出三个条目
f.setMenuBar(bar);
bar.add(menu);
menu.add(open);
menu.add(save);
menu.add(exit);
//窗体添加文本区域
f.add(ta);
//添加事件
event();
//显示窗体
f.setVisible(true);
}
public void event()
{
//保存菜单条添加活动监听器
save.addActionListener(new ActionListener()
{
//活动事件
public void actionPerformed(ActionEvent e)
{
//如果文件不存在
if(f1==null)
{
//弹出保存文件对话框获取目录和名字封装成文件对象
savedia.setVisible(true);
String path=savedia.getDirectory();
String name=savedia.getFile();
f1=new File(path,name);
if(path==null||name==null)
return ;
}
//如果文件存在,不弹出文件对话框
try
{
//定义写入流,将文本区域的数据写到文件中去
BufferedWriter bufw=new BufferedWriter(new FileWriter(f1));
String text=ta.getText();
bufw.write(text);
bufw.close();
}
catch (Exception en)
{
throw new RuntimeException("失败");
}
}
});
//打开菜单条添加活动监听器
open.addActionListener(new ActionListener()
{
//活动事件
public void actionPerformed(ActionEvent e)
{
//显示打开文件对话框,获取文件目录和名字并封装成文件对象
opendia.setVisible(true);
String path=opendia.getDirectory();
String file=opendia.getFile();
//System.out.println(path+"::"+file);
if(path==null||file==null)
return ;
ta.setText("");
f1=new File(path,file);
try
{
//定义读取流,读取指定文件数据写到文本区域上
BufferedReader bufr=new BufferedReader(new FileReader(f1));
String line=null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}
bufr.close();
}
catch (Exception ex)
{
throw new RuntimeException("失败");
}
}
});
//退出菜单条添加活动监听器
exit.addActionListener(new ActionListener()
{
//活动事件
public void actionPerformed(ActionEvent e)
{
System.exit(0);//退出程序
}
});
//窗体添加监听器
f.addWindowListener(new WindowAdapter()
{
//窗体关闭事件
public void windowClosing(WindowEvent e)
{
System.exit(0);//退出程序
}
});
}
public static void main(String[] args)
{
new MyJishibenDemo();
}
}