黑马程序员_GUI

  ------- 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();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值