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