黑马程序员------GUI编程

 ------- android培训、java培训、期待与您交流! ----------

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

创建窗体

创建窗体
/**
 * java gui  之创建窗体
 */

import java.awt.*;

public class MyFrame
{
    public static void main(String[] args)
    {
	//创建Frame对象
	Frame f = new Frame("myFrame");
	//设置显示为可见
	f.setVisible(true);
	//设置大小
	f.setSize(500,300);
	//设置位置
	f.setLocation(300,200);
	//设置布局管理,,流水线布局
	f.setLayout(new FlowLayout());
	
	
	//按钮
	Button b = new Button("按钮一个");
	f.add(b);
    }

}



****************************************************************************************************************************************************************************************


事件机制:

/**
 * 事件机制
 * 
 * 特点:
 * 1,事件源
 * 2,事件。
 * 3,监听器。
 * 4,事件处理。
 * 
 * 事件源,就是awt包或者swing包中的那些图形界面组建。
 * 
 * 事件: 每一个事件源都有自己特有的对应事件和共性事件
 * 
 * 监听器: 将可以触发某一个事件 的动作都已经封装到了监听器中。
 * 
 * 现在对窗体进行关闭操作
 */

import java.awt.*; 
import java.awt.event.*;//导入事件机制包
public class MyFrame2
{
    public static void main(String[] args)
    {
	//创建Frame对象
	Frame f = new Frame("myFrame");
	//设置显示为可见
	f.setVisible(true);
	//设置大小
	f.setSize(500,300);
	//设置位置
	f.setLocation(300,200);
	//设置布局管理,,流水线布局
	f.setLayout(new FlowLayout());
	
	
	//按钮
	Button b = new Button("按钮一个");
	f.add(b);
	//关闭窗口事件  使用了匿名类
	f.addWindowListener(new WindowAdapter()
	{
	    public void windowClosing(WindowEvent e)
	    {
		System.exit(0);	    
	    }
	});
	
    }

}



****************************************************************************************************************************************************************************************


键盘事件机制:

import java.awt.*;
import java.awt.event.*;

/**
 * 键盘事件举例
 * 
 * 
 * @author Administrator
 * 
 */
public class MyKey
{
    public static void main(String[] args)
    {
	new TextAction();
    }

}

class KeyAction
{
    // 定义该图形所用的组件
    private Frame f;// 框架
    private Button b;// 按钮

    KeyAction()// 构造函数
    {
	init();
    }

    public void init()// 初始化窗口的初始属性
    {
	f = new Frame("my frame");

	// 对frame进行初始的设置
	f.setBounds(300, 100, 400, 400);// 初始的位置以及大小
	f.setLayout(new FlowLayout());// 布局设置 流水线设置

	b = new Button("这是一个按钮");// 对按钮进行初始化
	f.add(b);// 将按钮添加到容器中

	myEvent();// 加载窗体事件

	f.setVisible(true);// 设置成可见
    }

    public void myEvent()// 事件处理机制
    {
	// 关闭窗口
	f.addWindowListener(new WindowAdapter()
	{
	    public void windowClosing(WindowEvent e)
	    {
		System.exit(0);
	    }
	});

	// 键盘事件

	b.addKeyListener(new KeyAdapter()
	{
	    public void keyPressed(KeyEvent e)
	    {
//System.out.println(e.getKeyChar()+"........."+e.getKeyCode());
		// getKeyText 根据码值返回键盘的文本
		System.out.println(e.getKeyText(e.getKeyChar()) + "........."
			+ e.getKeyCode());

		// 如果按下ESC键则推出程序
		if (e.getKeyChar() == e.VK_ESCAPE)
		{
		    System.out.println("按esc退出的程序");
		    System.exit(0);
		}

		// 按下ctrl键加回车键的事件 可以退出程序
		if (e.isControlDown() && e.getKeyChar() == e.VK_ENTER)
		{
		    System.out.println("发生ctrl + enter事件,退出程序");
		    System.exit(0);

		}
	    }
	});

    }

}




****************************************************************************************************************************************************************************************


按钮事件:点击按钮退出程序:


import java.awt.*;
import java.awt.event.*;

/**
 * 点击按钮 后退出程序
 * 
 * @author Administrator
 * 
 */
public class MyAction
{
    public static void main(String[] args)
    {
	new FrameDemo();
    }

}

class FrameDemo
{
    // 定义该图形所用的组件
    private Frame f;// 框架
    private Button b;// 按钮

    FrameDemo()// 构造函数
    {
	init();
    }

    public void init()// 初始化窗口的初始属性
    {
	f = new Frame("my frame");

	// 对frame进行初始的设置
	f.setBounds(300, 100, 400, 400);// 初始的位置以及大小
	f.setLayout(new FlowLayout());// 布局设置 流水线设置

	b = new Button("这是一个按钮,点击退出程序");// 对按钮进行初始化
	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.out.println(" 由按钮关闭程序");
		System.exit(0);
	    }

	});

    }

}



****************************************************************************************************************************************************************************************



鼠标事件举例:


import java.awt.*;
import java.awt.event.*;

/**
 * 鼠标事件举例
 * 
 * 
 void mouseClicked(MouseEvent e) 
          鼠标按键在组件上单击(按下并释放)时调用。 
 void mouseEntered(MouseEvent e) 
          鼠标进入到组件上时调用。 
 void mouseExited(MouseEvent e) 
          鼠标离开组件时调用。 
 void mousePressed(MouseEvent e) 
          鼠标按键在组件上按下时调用。 
 void mouseReleased(MouseEvent e) 
          鼠标按钮在组件上释放时调用。 

 * 
 * @author Administrator
 * 
 */
public class MyMouse
{
    public static void main(String[] args)
    {
	new MouseAction();
    }

}

class MouseAction
{
    // 定义该图形所用的组件
    private Frame f;// 框架
    private Button b;// 按钮

    MouseAction()// 构造函数
    {
	init();
    }

    public void init()// 初始化窗口的初始属性
    {
	f = new Frame("my frame");

	// 对frame进行初始的设置
	f.setBounds(300, 100, 400, 400);// 初始的位置以及大小
	f.setLayout(new FlowLayout());// 布局设置 流水线设置

	b = new Button("这是一个按钮,点击退出程序");// 对按钮进行初始化
	f.add(b);// 将按钮添加到容器中

	myEvent();// 加载窗体事件

	f.setVisible(true);// 设置成可见
    }

    public void myEvent()// 事件处理机制
    {
	// 关闭窗口
	f.addWindowListener(new WindowAdapter()
	{
	    public void windowClosing(WindowEvent e)
	    {
		System.exit(0);
	    }
	});

	// 鼠标事件
	b.addMouseListener(new MouseAdapter()
	{
	    private int count = 1;
	    private int clickCount = 1;
	    private int two = 1;

	    // 鼠标进入按钮事件
	    public void mouseEntered(MouseEvent e)
	    {
		System.out.println("鼠标进入按钮次数: " + count++);
	    }
	    
	    //鼠标点击按钮事件 
	    public void mouseClicked(MouseEvent e)
	    {
		//System.out.println("鼠标点击次数: " + clickCount++);
		//getClickCount返回与此事件关联的鼠标单击次数
		if(e.getClickCount() == 2)
		{
		    System.out.println("双击次数" + two++);
		}
	    }
	});

    }

}




****************************************************************************************************************************************************************************************


文本框键盘事件:


import java.awt.*;
import java.awt.event.*;

/**
 * 文本框的键盘事件
 * 
 * 
 * @author Administrator
 * 
 */
public class MyText
{
    public static void main(String[] args)
    {
	new TextAction();
    }

}

class TextAction
{
    // 定义该图形所用的组件
    private Frame f;// 框架
    private Button b;// 按钮
    private TextField tf;// 文本框

    TextAction()// 构造函数
    {
	init();
    }

    public void init()// 初始化窗口的初始属性
    {
	f = new Frame("my frame");

	//对frame进行初始的设置
	f.setBounds(300, 100, 400, 400);// 初始的位置以及大小
	f.setLayout(new FlowLayout());// 布局设置 流水线设置
	

	f.setBackground(Color.black);
	b = new Button("这是一个按钮");// 对按钮进行初始化
	// 添加文本框 默认设置为20
	tf = new TextField(20);

	f.add(tf);// 将文本框添加到容器中
	f.add(b);// 将按钮添加到容器中
	

	myEvent();// 加载窗体事件

	f.setVisible(true);// 设置成可见

    }

    public void myEvent()// 事件处理机制
    {
	// 关闭窗口
	f.addWindowListener(new WindowAdapter()
	{
	    public void windowClosing(WindowEvent e)
	    {
		System.exit(0);
	    }
	});

	// 文本框的键盘事件

	tf.addKeyListener(new KeyAdapter()
	{
	    public void keyPressed(KeyEvent e)
	    {
		int code = e.getKeyCode();// 将获取的键盘数值给code
		// 如果输入的不是0 - 9 那么不能输入进去
		if (!(code > e.VK_0 && code < e.VK_9))
		{
		    System.out.println("输入非法,只能输入数字");
		    // consume() 使用次事件便不会按照默认的方式由产生此事件
		    // 的源代码来处理此事件。也就是取消这次操作
		    e.consume();// 取消上次的操作

		}
	    }
	});

    }

}



***************************************************邪恶的分割线**********************************************************************************************************************





列出指定目录:::


/**
 * 列出指定目录
 * 
 * 如果输入错误有对话框
 */
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class MyWindowDemo
{

    public static void main(String[] args)
    {
	new MyWindow();
    }

}

class MyWindow
{
    private Frame fr;
    private Button but;
    private TextField tf;
    private TextArea ta;// 多行文本框

    // 下面是设置警告对话框 对话框由 对话框 确定按钮 提示信息组成
    private Dialog d;// 对话框
    private Label lab;// 提示信息
    private Button okbut;// 确定按钮

    MyWindow()// 构造方法
    {
	init();

    }

    // 初始化
    public void init()
    {

	fr = new Frame("myFrame");
	but = new Button("转到");
	tf = new TextField(30);
	ta = new TextArea(25, 50);

	fr.setBounds(200, 100, 600, 600);// 窗口大小和位置
	fr.setVisible(true);// 设置成可见
	fr.setLayout(new FlowLayout());// 流水线布局

	d = new Dialog(fr, "提示信息", true);// 创建对话框对象
	lab = new Label();// 提示信息
	okbut = new Button("确定");
	
	d.setBounds(200, 150, 180, 150);//设置对话框位置以及长宽
	d.setLayout(new FlowLayout());
	
	
	d.add(lab);//对话框里面加入提示信息
	d.add(okbut);//对话框里面加入按钮
	

	fr.add(tf);
	fr.add(but);
	fr.add(ta);

	myEvent();

    }

    public void myEvent()
    {
	//对话框事件
	d.addWindowListener(new WindowAdapter()
	{
	    public void windowClosing(WindowEvent e)
	    {
		d.setVisible(false);
	    }

	});
	//点击确定事件
	okbut.addActionListener(new ActionListener()
	{
	    public void actionPerformed(ActionEvent e)
	    {
		d.setVisible(false);
	    }

	});
	// 关闭窗口事件
	fr.addWindowListener(new WindowAdapter()
	{
	    public void windowClosing(WindowEvent e)
	    {
		
		System.exit(0);
	    }

	});

	// 点击转到事件
	but.addActionListener(new ActionListener()
	{
	    public void actionPerformed(ActionEvent e)
	    {
		// 将单行文本框的字符赋值给dirpath
		String dirPath = tf.getText();
		// 将获得的字符串路径封装
		File dir = new File(dirPath);

		if (dir.exists() && dir.isDirectory())
		{
		    ta.setText("");// 先清空多行文本 要不然每次都会追加上
		    String[] names = dir.list();// 将目录字符串给name 数组

		    for (String name : names)
		    {
			ta.append(name + "\n");// 这里是追加到多行文本框 \n换行

		    }
		} else//如果输入的不是目录弹出对话框
		{
		    String st = "输入的地址错误,请重新输入";
		    lab.setText(st);
		    d.setVisible(true);
		}
	    }
	});
	

    }

}



***************************************************邪恶的分割线**********************************************************************************************************************



记事本文件打开对话框:

//打开对话框例子
import java.awt.*;
import java.io.*;
import java.awt.event.*;

public class OpenFile
{
    private Frame f;
    private MenuBar bar;
    private Menu FileMenu;
    private MenuItem closeItem, subItem, siveItem, OpenItem;
    private TextArea ta;

    private FileDialog openDia, saveDia;// 打开和保存对话框

    OpenFile()
    {
	init();
    }

    public void init()
    {
	f = new Frame("打开文件练习");
	f.setBounds(300, 100, 560, 600);

	bar = new MenuBar();// 创建菜单条

	FileMenu = new Menu("文件"); // 创建菜单条内容

	closeItem = new MenuItem("退出");// 创建菜单中的条目
	siveItem = new MenuItem("保存");
	OpenItem = new MenuItem("打开");
	
	ta = new TextArea();//文本框

	FileMenu.add(OpenItem);// 加入
	FileMenu.add(siveItem);
	FileMenu.add(closeItem);// 将退出添加到文件菜单中
	bar.add(FileMenu);// 将文件菜单添加到菜单条中

	openDia = new FileDialog(f, "要打开", FileDialog.LOAD);
	saveDia = new FileDialog(f, "要保存", FileDialog.SAVE);

	f.setMenuBar(bar);// 将菜单栏加入框架
	f.add(ta);//将文本框添加到容器中

	myEvent();

	f.setVisible(true);

    }

    public void myEvent()// 事件处理机制
    {
	// 对话框事件
	OpenItem.addActionListener(new ActionListener()
	{
	    public void actionPerformed(ActionEvent e)
	    {
		openDia.setVisible(true);//点击打开后会显示弹出对话框
		//获得 路径名 文件名
		String dirPath = openDia.getDirectory();
		String fileName = openDia.getFile();
		System.out.println(dirPath+ "........"+fileName);
		//如果获得的路径 或者 文件名为空
		if(dirPath==null || fileName == null)
		{
		    //返回空
		    return ;
		}

		ta.setText("");
		
		//下面进行文件操作  对路径和文件名进行封装
		File file = new File(dirPath,fileName);
		//进行源和目的的操作
		try{
		    BufferedReader bufr = new BufferedReader(new FileReader(file));
		    
		    String line = null;
		    
		    while((line = bufr.readLine()) != null)
		    {
			ta.append(line +"\r\n");
			
		    }
		    
		}catch(IOException ex)
		{
		    throw new RuntimeException("读取失败");
		}
	    }
	});

	// 点击退出退出程序
	closeItem.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 OpenFile();
    }

}


***************************************************邪恶的分割线**********************************************************************************************************************


记事本完整程序:有打开,有保存

import java.awt.*;
import java.io.*;
import java.awt.event.*;

public class SiveFile
{
    private Frame f;
    private MenuBar bar;
    private Menu FileMenu;
    private MenuItem closeItem, subItem, saveItem, OpenItem;
    private TextArea ta;

    private FileDialog openDia, saveDia;// 打开和保存对话框
    private File file;// 创建文件

    SiveFile()
    {
	init();
    }

    public void init()
    {
	f = new Frame("记事本程序");
	f.setBounds(300, 100, 560, 600);

	bar = new MenuBar();// 创建菜单条

	FileMenu = new Menu("文件"); // 创建菜单条内容

	closeItem = new MenuItem("退出");// 创建菜单中的条目
	saveItem = new MenuItem("保存");
	OpenItem = new MenuItem("打开");

	ta = new TextArea();// 文本框

	FileMenu.add(OpenItem);// 加入
	FileMenu.add(saveItem);
	FileMenu.add(closeItem);// 将退出添加到文件菜单中
	bar.add(FileMenu);// 将文件菜单添加到菜单条中

	openDia = new FileDialog(f, "要打开", FileDialog.LOAD);
	saveDia = new FileDialog(f, "要保存", FileDialog.SAVE);

	f.setMenuBar(bar);// 将菜单栏加入框架
	f.add(ta);// 将文本框添加到容器中

	myEvent();

	f.setVisible(true);

    }

    public void myEvent()// 事件处理机制
    {
	// 保存文件对话框事件
	saveItem.addActionListener(new ActionListener()
	{

	    public void actionPerformed(ActionEvent e)
	    {
		
		// 如果文件名为空 需要创建一个新的
		if (file == null)
		{
		    saveDia.setVisible(true);// 点击保存后会显示弹出对话框
		    // 获得 路径名 文件名
		    String dirPath = saveDia.getDirectory();
		    String fileName = saveDia.getFile();
		    if (dirPath == null || fileName == null)
		    {
			return;
		    }
		    file = new File(dirPath, fileName);// 将路径给了file
		}
		//不为空 就保存为原来的文件
		try
		{
		    BufferedWriter bufw = new BufferedWriter(new FileWriter(file));

		    String text = ta.getText();
		    bufw.write(text);
		    bufw.close();
		} catch (IOException ex)
		{
		    throw new RuntimeException("保存失败");
		}

	    }

	});

	// 打开文件对话框事件
	OpenItem.addActionListener(new ActionListener()
	{
	    public void actionPerformed(ActionEvent e)
	    {
		openDia.setVisible(true);// 点击打开后会显示弹出对话框
		// 获得 路径名 文件名
		String dirPath = openDia.getDirectory();
		String fileName = openDia.getFile();
		System.out.println(dirPath + "........" + fileName);
		// 如果获得的路径 或者 文件名为空
		if (dirPath == null || fileName == null)
		{
		    // 返回空
		    return;
		}

		ta.setText("");

		// 下面进行文件操作 对路径和文件名进行封装
		file = new File(dirPath, fileName);
		// 进行源和目的的操作
		try
		{
		    BufferedReader bufr = new BufferedReader(new FileReader(
			    file));

		    String line = null;

		    while ((line = bufr.readLine()) != null)
		    {
			ta.append(line + "\r\n");

		    }

		} catch (IOException ex)
		{
		    throw new RuntimeException("读取失败");
		}
	    }
	});

	// 点击退出退出程序
	closeItem.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 SiveFile();
    }

}




你可能感兴趣的:(黑马程序员------GUI编程)