------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
第一讲 Gui概述
1、图形用户界面,用于计算机与用户交互的一种方式。
用图形的界面显示计算机操作的界面,这样更为方便,更为直观。
相反dos命令行,需要记忆些常用的命令,操作不直观
2、java为Gui提供的对象都在java.awt和java.Swing两个包中
java.awt需要调用本地系统方法实现功能,属于重量级控件
java.Swing在Awt上,建立一套图形用户界面系统,提供更多的组件,而且完全有java实现,属于轻量级控件
3、container是一个容器,是一个特殊的组件,该组件可以通过add方法添加其他组件进来。
Container常用子类:Window Panel(面板,不能单独存在。)
Window常用子类:Frame Dialog
4、常见布局管理器
4.1 FlowLayout 流式布局管理器
从左到右的顺序排列,panel默认的管理器
4.2、borderLayout 边界布局管理器
东南西北中排列。是Frame默认的管理器
4.3 、GridLayout 网络布局管理器
规则的矩阵
4.4、CardLayout:卡片式布局管理器,即选项卡
4. 5、GridBayLayout:网格包布局管理器,非规则矩阵
思考:如果存在多种布局方式,如何创建窗体界面呢?
先将窗体Frame进行大区域的划分,设置其布局管理器,加入面板Panel, 将组件加入Panel,设置面板的布局管理器。
5、创建图形化界面
5.1、创建frame窗体
5.2、对窗体进行基本设置
比如大小、位置、布局
5.3、定义组件
5.4、将组件通过add方法添加到窗体
5.5、让窗体显示,通过setVisible(true)
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//传建一个窗体,并进行基本设置
/*
class GuiTest
{
public static void main(String[] args)
{
Frame f=new Frame("我的窗体");//创建窗体
f.setBounds(200,300,400,300);//设置大小
Button b=new Button("按钮");
f.add(b);//将按钮添加到窗体上
f.setLayout(new FlowLayout());//设置窗体为流式布局
f.setVisible(true);//将窗体设置为可见
}
}
第二讲 事件监听机制
1、事件源
就是awt或者swing包中的组件
2、事件
每一个事件源都有自己特有的对应的事件和共性事件
3、监听器
将可以触发某一个事件的动作都封装到监听器中。
以上三者在java中已经定义好了,我们只要对产生的动作处理就行了
3.1、确定事件源(容器或组件)。通过事件源对象的addXXXListener()方法将监听器注册到该事件源上。该方法中接收XXXListener的子类对象,
或者XXXListener的子类XXXAdapter的子类对象。
3.2、一般用匿名内部类来表示。在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
4、窗体的监听事件
要继承windowAdapter并复写windowclosing方法,对应的事件是windowEvent
5、按钮的监听事件
没有对应的adapter,要覆盖的方法时actionPerformed,对应的事件是actionEvent
6、对话框Dialog
7、菜单栏的制作
8、常用的组件
文本框、文本区、菜单栏、子菜单
8.1、Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem
8.2、MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。
8.3、MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。
8.4、菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。
8.5、通过setMenuBar()方法,将菜单添加到Frame中。
------------------------------------------------------------
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//创建一个窗体,并对窗体事件,按钮事件,鼠标事件和键盘事件进行练习
/*
class GuiTest
{
public static void main(String[] args)
{
Frame f=new Frame("我的窗体");//创建窗体
f.setBounds(200,300,400,300);//设置大小
Button b=new Button("关闭按钮");
f.add(b);//将按钮添加到窗体上
f.setLayout(new FlowLayout());//设置窗体为流式布局
f.setVisible(true);//将窗体设置为可见
f.addWindowListener(new WindowAdapter() //以匿名内部类的形式传入
{
public void windowClosing(WindowEvent e)//复写方法
{
System.exit(0);
}
});
b.addActionListener(new ActionListener()//以匿名内部类的形式传入
{
public void actionPerformed(ActionEvent e)//复写方法
{
System.exit(0);
}
});
b.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)//复写方法
{
//System.out.println("点击事件");
//if(e.getClickCount==2)
//System.out.println("双击事件");//栓剂事件
}
});
b.addKeyListener(new KeyListener()//以匿名内部类的形式传入
{
public void keyPressed(KeyEvent e)//复写方法
{
if(e.getKeyCode()=KeyEvent.VK_ENTER)
System.exit(0);
}
});
}
}
------------------------------------------------------
*/
//需求:在窗体上添加一个文本框和文本区域,在文本框中输入本地盘符。就将该盘下的目录添加到文本区域
//输入的不是本地磁盘,就弹出对话框提示
/*
class GuiTest
{
public static void main(String[] args)
{
Frame f=new Frame("我的窗体");//创建窗体
f.setBounds(200,300,400,300);//设置大小
Button b=new Button("转到");
TextField tf=new TextField(30);//创建文本框
TextArea ta=new TextArea(40,50);//创建文本区域
Dialog d=new Dialog(f,"提示信息",true);//创建对话框
d.setBounds(100,100,300,200);
Label lab=new Label();
d.add(lab);
f.add(tf);//添加文本区域
f.add(ta);
f.add(b);//将按钮添加到窗体上
f.setLayout(new FlowLayout());//设置窗体为流式布局
f.setVisible(true);//将窗体设置为可见
d.addWindowListener(new WindowAdapter() //以匿名内部类的形式传入
{
public void windowClosing(WindowEvent e)//复写方法
{
d.setVisible(false);
}
});
b.addActionListener(new ActionListener()//以匿名内部类的形式传入
{
public void actionPerformed(ActionEvent e)//复写方法
{
ta.setText("");//每次添加时,都把文本区域清空
String str=tf.getText();
File file=new File(str);
if(file.exists() && file.isDirectory())//判断输入的是否为目录
{
String []files=file.list();//列出所有目录
for (String s:files)
{
ta.append(s+"\r\n");//添加到文本区域
}
}
else
{
d.setVisible(true);
String ss="路径不存在";
lab.setText(ss);
}
}
});
}
}
---------------------------------------------------------------
*/
//在窗体上添加菜单栏,菜单项,子菜单,菜单下面有保存、退出、打开菜单。
//当点击打开时,弹出保存的对话框,保存时也会弹出对话框
class GuiTest
{
public static void main(String[] args)
{
new Gui();
}
}
class Gui
{
//将数据私有
private Frame f;
private MenuBar mb;
private Menu m;
private MenuItem mt,open,close,save;
private FileDialog openDialog;
private FileDialog saveDialog;
private TextArea ta;
private File file;
//构造函数
Gui()
{
init();
}
public void init()
{
f=new Frame("我的窗体");//创建窗体
mb=new MenuBar();
m=new Menu("文件");
//创建按钮
open=new MenuItem("打开");
close=new MenuItem("关闭");
save=new MenuItem("保存");
ta=new TextArea();
openDialog=new FileDialog(f,"打开窗口",FileDialog.LOAD);//创建打开窗口
saveDialog=new FileDialog(f,"保存",FileDialog.SAVE);//创建保存窗口
f.setBounds(200,300,400,300);//设置大小
f.setMenuBar(mb);//窗体上添加菜单栏
mb.add(m);
m.add(open);
m.add(close);
m.add(save);
f.add(ta);
f.setVisible(true);//将窗体设置为可见
event();//调用方法
}
public void event()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);//关闭窗口
}
});
close.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
save.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)//文件不存在才打开窗口
{
saveDialog.setVisible(true);
String dir=saveDialog.getDirectory();//获取目录
String name=saveDialog.getFile();//获取名字
if(dir==null || name==null)
return ;//不存在时返回空
file=new File(dir,name);
}
BufferedWriter buw=null;
try
{
buw=new BufferedWriter (new FileWriter(file));//关联文件
String str=ta.getText();
buw.write(str);
buw.flush();
buw.newLine();
}
catch (IOException ex)//不能跑出异常,只能处理
{
throw new RuntimeException("写入失败");
}
finally
{
try
{
if(buw!=null)
buw.close();//关闭资源
}
catch (IOException ex)
{
throw new RuntimeException("关闭失败");
}
}
}
});
open.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDialog.setVisible(true);
String dir=openDialog.getDirectory();//获取目录
String name=openDialog.getFile();//获取名字
if(dir==null || name==null)
return ;//不存在时返回空
file=new File(dir,name);
BufferedReader bur=null;
try
{
bur=new BufferedReader (new FileReader(file));//关联文件
String line=null;
while ((line=bur.readLine())!=null)
{
ta.append(line+"\r\n");
}
}
catch (IOException ex)//不能跑出异常,只能处理
{
throw new RuntimeException("读取失败");
}
finally
{
try
{
if(bur!=null)
bur.close();//关闭资源
}
catch (IOException ex)
{
throw new RuntimeException("关闭失败");
}
}
}
});
}
}
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------