您现在的位置是:首页 > 文章详情

java基础学习_GUI_如何让Netbeans的东西Eclipse能访问、GUI(图形用户接口)_day25总结

日期:2018-04-09点击:544

java基础学习_GUI_如何让Netbeans的东西Eclipse能访问、GUI(图形用户接口)_day25总结

============================================================================= ============================================================================= 涉及到的知识点有: 1:如何让Netbeans的东西Eclipse能访问? 2:GUI(图形用户接口)(了解) (1)GUI的概述 (2)两个包: (3)GUI的继承体系图 (4)事件监听机制(理解) (5)适配器模式(理解) (6)案例: (7)Netbeans的概述和使用 ============================================================================= ============================================================================= 1:如何让Netbeans的东西Eclipse能访问? 在Eclipse中创建项目,把Netbeans项目的src下的东西给拿过来即可。 注意:修改项目编码为UTF-8 ----------------------------------------------------------------------------- 2:GUI(图形用户接口)(了解) (1)GUI的概述 GUI:Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观。 CLI:Command line User Interface(命令行用户接口)  GUI:方便直观。 CLI:需要记忆一些命令,麻烦不直观。 Java为GUI提供的对象都存在java.awt和javax.swing两个包中。  java:为java的标准包。  javac:为java的扩展包。 -------------------------------------- (2)两个包: java.awtAbstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属重量级控件。(和系统关联较强) javax.swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。(纯Java编写) (3)GUI的继承体系图 组件:组件就是对象。 容器组件:是可以存储基本组件和容器组件的组件。 基本组件:是可以使用的组件,但必须依赖容器组件。 注意: 由于Component、Container、Window类的方法太多太多了, 所以我们学习Frame、Dialog、FileDialog类。 Java中GUI的继承体系图如下图所示:
-------------------------------------- (4)事件监听机制(理解) A:事件源 事件发生的地方 B:事件 要发生的事情 C:事件处理 针对发生的事情做出的处理方案 D:事件监听 把事件源和事件关联起来 (5)适配器模式(理解) 当你自己写的类中想用某个接口中个别方法的时候(注意:不是所有的方法),肿么办? 那么你就可以用一个抽象类先实现这个接口(注意:仅仅是空实现:方法体为空),然后再用你的类继承这个抽象类,在你的类中用哪个方法就实现哪个方法,这样就可以达到目的了; 如果你直接用类实现接口,那接口的所有方法都必须实现的。 A:接口 B:抽象适配器类 C:实现类
 1 package cn.itcast_03;  2  3 /*  4  * 针对用户操作的四种功能的接口  5 */  6 public interface UserDao {  7 public abstract void add();  8  9 public abstract void delete(); 10 11 public abstract void update(); 12 13 public abstract void find(); 14 }
接口
 1 package cn.itcast_03;  2  3 public abstract class UserAdapter implements UserDao {  4  5  @Override  6 public void add() {  7  }  8  9  @Override 10 public void delete() { 11  } 12 13  @Override 14 public void update() { 15  } 16 17  @Override 18 public void find() { 19  } 20 21 }
抽象适配器类
1 package cn.itcast_03; 2 3 public class UserDaoImpl2 extends UserAdapter { 4  @Override 5 public void add() { 6 System.out.println("添加功能"); 7  } 8 9 }
实现类
 1 package cn.itcast_03;  2  3 /*  4  * 问题:  5  * 接口(方法比较多) --> 实现类(我仅仅是使用其中的一个方法,也得把其他的方法给实现了,哪怕是空实现)  6  * 太麻烦了。  7  * 解决方案:  8  * 接口(方法比较多) --> 适配器类(实现接口,仅仅是空实现:方法体为空) --> 实现类(用哪个方法就重写哪个方法)  9 */ 10 public class UserDaoTest { 11 public static void main(String[] args) { 12 UserDao ud = new UserDaoImpl(); 13  ud.add(); 14 // 该实现类里面实现了四种功能,我仅仅使用一种功能,可是我并不需要实现这么多功能啊!肿么办? 15 16 UserDao ud2 = new UserDaoImpl2(); 17  ud2.add(); 18  } 19 }
测试类
  (6)案例:  A:创建窗体案例 B:窗体关闭案例 示例代码如下:
 1 package cn.itcast_02;  2  3 import java.awt.Frame;  4 import java.awt.event.WindowAdapter;  5 import java.awt.event.WindowEvent;  6 import java.awt.event.WindowListener;  7  8 public class FrameDemo {  9 public static void main(String[] args) { 10 // 创建窗体对象 11 Frame f = new Frame("窗体关闭案例"); 12 13 // 设置窗体属性(位置和大小) 14 f.setBounds(400, 200, 400, 300); 15 16 // 让窗体关闭 17 // 事件源:窗体 18 // 事件:对窗体的处理(接口) 19 // 事件处理:关闭窗口(System.exit(0)); 20 // 事件监听 21 22 /* 23  f.addWindowListener(new WindowListener() { 24  @Override 25  public void windowOpened(WindowEvent e) { 26  } 27 28  @Override 29  public void windowIconified(WindowEvent e) { 30  } 31 32  @Override 33  public void windowDeiconified(WindowEvent e) { 34  } 35 36  @Override 37  public void windowDeactivated(WindowEvent e) { 38  } 39 40  @Override 41  public void windowClosing(WindowEvent e) { 42  System.exit(0); 43  } 44 45  @Override 46  public void windowClosed(WindowEvent e) { 47  } 48 49  @Override 50  public void windowActivated(WindowEvent e) { 51  } 52  }); 53 */ 54 55 // WindowListener接口 --> WindowAdapter抽象实现类(适配器类) --> 具体的实现类(WindowAdapter抽象实现类的匿名内部类) 56 // 用适配器类改进 57 f.addWindowListener(new WindowAdapter() { 58  @Override 59 public void windowClosing(WindowEvent e) { 60 System.exit(0); 61  } 62  }); 63 64 // 设置窗体可显示 65 f.setVisible(true); 66  } 67 }
窗体关闭案例
 C:窗体添加按钮并对按钮添加事件案例 窗体布局方案如下图所示: 示例代码如下:
 1 package cn.itcast_04;  2  3 import java.awt.Button;  4 import java.awt.FlowLayout;  5 import java.awt.Frame;  6 import java.awt.event.ActionEvent;  7 import java.awt.event.ActionListener;  8 import java.awt.event.WindowAdapter;  9 import java.awt.event.WindowEvent; 10 11 /* 12  * 需求:把按钮添加到窗体,并对按钮添加一个点击事件。 13  * A:创建窗体对象 14  * B:创建按钮对象 15  * C:把按钮添加到窗体 16  * D:设置窗体可关闭 17  * E:设置按钮可点击 18  * F:设置窗体可显示 19 */ 20 public class FrameDemo { 21 public static void main(String[] args) { 22 // 创建窗体对象 23 Frame f = new Frame("添加按钮"); 24 // 设置窗体属性(位置和大小) 25 f.setBounds(400, 200, 400, 300); 26 // 设置窗体布局为流式布局(Frame窗体布局默认为边界布局) 27 f.setLayout(new FlowLayout()); 28 29 // 创建按钮对象 30 Button bu = new Button("clock me"); 31 32 // 把按钮添加到窗体 33  f.add(bu); 34 35 // WindowListener接口 --> WindowAdapter抽象实现类(适配器类) --> 具体的实现类(WindowAdapter抽象实现类的匿名内部类) 36 // 设置窗体可关闭 37 f.addWindowListener(new WindowAdapter() { 38  @Override 39 public void windowClosing(WindowEvent e) { 40 System.exit(0); 41  } 42  }); 43 44 // ActionListener接口 --> 具体的实现类(ActionListener接口的匿名内部类) 因为该接口中只有一个方法 45 // 对按钮添加事件 46 bu.addActionListener(new ActionListener() { 47  @Override 48 public void actionPerformed(ActionEvent e) { 49 System.out.println("你再点试试"); 50  } 51  }); 52 53 // 设置窗体可显示 54 f.setVisible(true); 55  } 56 }
把按钮添加到窗体,并对按钮添加一个点击事件
  D:把文本框里面的数据转移到文本域 示例代码如下:
 1 package cn.itcast_05;  2  3 import java.awt.Button;  4 import java.awt.FlowLayout;  5 import java.awt.Frame;  6 import java.awt.TextArea;  7 import java.awt.TextField;  8 import java.awt.event.ActionEvent;  9 import java.awt.event.ActionListener; 10 import java.awt.event.WindowAdapter; 11 import java.awt.event.WindowEvent; 12 13 public class FrameDemo { 14 public static void main(String[] args) { 15 // 创建窗体对象 16 Frame f = new Frame("数据转移"); 17 // 设置窗体属性和布局 18 f.setBounds(400, 200, 400, 300); 19 f.setLayout(new FlowLayout()); 20 21 // 创建文本框对象 22 final TextField tf = new TextField(20); 23 // 创建按钮对象 24 Button bu = new Button("database move"); 25 // 创建文本域对象 26 final TextArea ta = new TextArea(10, 40); 27 28 // 把组件添加到窗体 29  f.add(tf); 30  f.add(bu); 31  f.add(ta); 32 33 // 设置窗体可关闭 34 f.addWindowListener(new WindowAdapter() { 35  @Override 36 public void windowClosing(WindowEvent e) { 37 System.exit(0); 38  } 39  }); 40 41 // 对按钮添加事件 42 bu.addActionListener(new ActionListener() { 43  @Override 44 public void actionPerformed(ActionEvent e) { 45 // 获取文本框数据(去前后空格) 46 String tf_str = tf.getText().trim(); // 局部内部类访问局部变量,局部变量需要用final修饰 47 // 清空文本框数据 48 tf.setText(""); 49 50 // 把文本框数据设置给文本域 51 // ta.setText(tf_str); 52 // 追加和换行 53 ta.append(tf_str + "\r\n"); 54 55 // 获取光标 56  tf.requestFocus(); 57  } 58  }); 59 60 // 设置窗体可显示 61 f.setVisible(true); 62  } 63 }
把文本框里面的数据转移到文本域
 E:更改背景色 示例代码如下:
 1 package cn.itcast_06;  2  3 import java.awt.Button;  4 import java.awt.Color;  5 import java.awt.FlowLayout;  6 import java.awt.Frame;  7 import java.awt.event.MouseAdapter;  8 import java.awt.event.MouseEvent;  9 import java.awt.event.WindowAdapter;  10 import java.awt.event.WindowEvent;  11  12 public class FrameDemo {  13 public static void main(String[] args) {  14 // 创建窗体对象  15 final Frame f = new Frame("更改背景色");  16 // 设置窗体属性和布局  17 f.setBounds(400, 200, 400, 300);  18 f.setLayout(new FlowLayout());  19  20 // 创建四个按钮对象  21 Button redButton = new Button("red");  22 Button greenButton = new Button("green");  23 Button buleButton = new Button("blue");  24  25 // 把按钮添加到窗体  26  f.add(redButton);  27  f.add(greenButton);  28  f.add(buleButton);  29  30 // 设置窗体可关闭  31 f.addWindowListener(new WindowAdapter() {  32  @Override  33 public void windowClosing(WindowEvent e) {  34 System.exit(0);  35  }  36  });  37  38 /*  39  // 对按钮添加动作事件  40  redButton.addActionListener(new ActionListener() {  41  @Override  42  public void actionPerformed(ActionEvent e) {  43  f.setBackground(Color.RED);  44  }  45  });  46  47  // 对按钮添加鼠标点击事件  48  redButton.addMouseListener(new MouseAdapter() {  49  @Override  50  public void mouseClicked(MouseEvent e) {  51  f.setBackground(Color.RED);  52  }  53  });  54 */  55  56 // 对按钮添加鼠标进入和离开事件  57 redButton.addMouseListener(new MouseAdapter() {  58  @Override  59 public void mouseEntered(MouseEvent e) {  60  f.setBackground(Color.RED);  61  }  62  });  63  64 redButton.addMouseListener(new MouseAdapter() {  65  @Override  66 public void mouseExited(MouseEvent e) {  67  f.setBackground(Color.WHITE);  68  }  69  });  70  71 // 对按钮添加鼠标进入和离开事件  72 greenButton.addMouseListener(new MouseAdapter() {  73  @Override  74 public void mouseEntered(MouseEvent e) {  75  f.setBackground(Color.GREEN);  76  }  77  });  78  79 greenButton.addMouseListener(new MouseAdapter() {  80  @Override  81 public void mouseExited(MouseEvent e) {  82  f.setBackground(Color.WHITE);  83  }  84  });  85  86 // 对按钮添加鼠标进入和离开事件  87 buleButton.addMouseListener(new MouseAdapter() {  88  @Override  89 public void mouseEntered(MouseEvent e) {  90  f.setBackground(Color.BLUE);  91  }  92  });  93  94 buleButton.addMouseListener(new MouseAdapter() {  95  @Override  96 public void mouseExited(MouseEvent e) {  97  f.setBackground(Color.WHITE);  98  }  99  }); 100 101 // 设置窗体可显示 102 f.setVisible(true); 103  } 104 }
更改背景色
 F:设置文本框里面不能输入非数字字符 示例代码如下:
 1 package cn.itcast_07;  2  3 import java.awt.FlowLayout;  4 import java.awt.Frame;  5 import java.awt.Label;  6 import java.awt.TextField;  7 import java.awt.event.KeyAdapter;  8 import java.awt.event.KeyEvent;  9 import java.awt.event.WindowAdapter; 10 import java.awt.event.WindowEvent; 11 12 /* 13  * 你输入的如果是非数字字符,就取消你键盘录入的效果。 14 */ 15 public class FrameDemo { 16 public static void main(String[] args) { 17 // 创建窗体对象并设置属性和布局 18 Frame f = new Frame("不能输入非数字字符"); 19 f.setBounds(400, 200, 400, 300); 20 f.setLayout(new FlowLayout()); 21 22 // 创建标签对象和文本框对象 23 Label label = new Label("请输入你的QQ号码,不能是非数字,不信你试试"); 24 TextField tf = new TextField(40); 25 26 // 把标签和文本框添加到窗体 27  f.add(label); 28  f.add(tf); 29 30 // 设置窗体可关闭 31 f.addWindowListener(new WindowAdapter() { 32  @Override 33 public void windowClosing(WindowEvent e) { 34 System.exit(0); 35  } 36  }); 37 38 // 对文本框添加事件 39 tf.addKeyListener(new KeyAdapter() { 40  @Override 41 public void keyPressed(KeyEvent e) { 42 // 思路:先获取字符,再判断字符,取消事件 43 // KeyEvent类的方法:public char getKeyChar()  44 char ch = e.getKeyChar(); 45 if(!(ch>='0' && ch<='9')){ 46 e.consume(); // 取消事件 47  } 48  } 49  }); 50 51 // 设置窗体可显示 52 f.setVisible(true); 53  } 54 }
设置文本框里面不能输入非数字字符
 G:一级菜单 菜单组件图: 示例代码如下:
 1 package cn.itcast_08;  2  3 import java.awt.FlowLayout;  4 import java.awt.Frame;  5 import java.awt.Menu;  6 import java.awt.MenuBar;  7 import java.awt.MenuItem;  8 import java.awt.event.ActionEvent;  9 import java.awt.event.ActionListener; 10 import java.awt.event.WindowAdapter; 11 import java.awt.event.WindowEvent; 12 13 /* 14  * 一级菜单 15 */ 16 public class FrameDemo { 17 public static void main(String[] args) { 18 // 创建窗体对象并设置属性和布局 19 Frame f = new Frame("一级菜单"); 20 f.setBounds(400, 200, 400, 300); 21 f.setLayout(new FlowLayout()); 22 23 // 创建菜单栏对象 24 MenuBar mb = new MenuBar(); 25 // 创建菜单对象 26 Menu m = new Menu("File"); 27 // 创建菜单项对象 28 MenuItem mi = new MenuItem("Exit"); 29 30 // 把菜单项添加到菜单,把菜单添加到菜单栏 31  m.add(mi); 32  mb.add(m); 33 34 // 把菜单栏添加到窗体 35  f.setMenuBar(mb); 36 37 // 设置窗体可关闭 38 f.addWindowListener(new WindowAdapter() { 39  @Override 40 public void windowClosing(WindowEvent e) { 41 System.exit(0); 42  } 43  }); 44 45 // 对菜单项添加事件 46 mi.addActionListener(new ActionListener() { 47  @Override 48 public void actionPerformed(ActionEvent e) { 49 System.exit(0); 50  } 51  }); 52 53 // 设置窗体可显示 54 f.setVisible(true); 55  } 56 }
一级菜单
 H:多级菜单 示例代码如下:
 1 package cn.itcast_09;  2  3 import java.awt.FlowLayout;  4 import java.awt.Frame;  5 import java.awt.Menu;  6 import java.awt.MenuBar;  7 import java.awt.MenuItem;  8 import java.awt.event.ActionEvent;  9 import java.awt.event.ActionListener;  10 import java.awt.event.WindowAdapter;  11 import java.awt.event.WindowEvent;  12 import java.io.IOException;  13  14 /*  15  * 多级菜单  16 */  17 public class FrameDemo {  18 public static void main(String[] args) {  19 // 创建窗体对象并设置属性和布局  20 final Frame f = new Frame("多级菜单");  21 f.setBounds(400, 200, 400, 300);  22 f.setLayout(new FlowLayout());  23  24 final String name = f.getTitle(); // 获取窗体标题(该量多处使用)  25  26 // 创建菜单栏对象  27 MenuBar mb = new MenuBar();  28 // 创建菜单对象  29 Menu m1 = new Menu("文件");  30 Menu m2 = new Menu("更改名称");  31 // 创建菜单项对象  32 final MenuItem mi1 = new MenuItem("好好学习");  33 final MenuItem mi2 = new MenuItem("天天向上");  34 MenuItem mi3 = new MenuItem("恢复标题");  35 MenuItem mi4 = new MenuItem("打开记事本");  36 MenuItem mi5 = new MenuItem("退出系统");  37  38 // 把菜单项添加到菜单,把菜单添加到菜单栏  39  m2.add(mi1);  40  m2.add(mi2);  41  m2.add(mi3);  42  43  m1.add(m2);  44  m1.add(mi4);  45  m1.add(mi5);  46  47  mb.add(m1);  48  49 // 把菜单栏添加到窗体  50  f.setMenuBar(mb);  51  52 // 设置窗体可关闭  53 f.addWindowListener(new WindowAdapter() {  54  @Override  55 public void windowClosing(WindowEvent e) {  56 System.exit(0);  57  }  58  });  59  60 mi1.addActionListener(new ActionListener() {  61  @Override  62 public void actionPerformed(ActionEvent e) {  63 f.setTitle(mi1.getLabel()); // 获取此菜单项的标签 局部内部类访问局部变量,局部变量需要用final修饰  64  }  65  });  66  67 mi2.addActionListener(new ActionListener() {  68  @Override  69 public void actionPerformed(ActionEvent e) {  70 f.setTitle(mi2.getLabel()); // 获取此菜单项的标签 局部内部类访问局部变量,局部变量需要用final修饰  71  }  72  });  73  74 mi3.addActionListener(new ActionListener() {  75  @Override  76 public void actionPerformed(ActionEvent e) {  77 f.setTitle(name); // 局部内部类访问局部变量,局部变量需要用final修饰  78  }  79  });  80  81 mi4.addActionListener(new ActionListener() {  82  @Override  83 public void actionPerformed(ActionEvent e) {  84 Runtime r = Runtime.getRuntime(); // 可以通过getRuntime()方法获取当前运行时对象  85 try {  86 r.exec("notepad");  87 } catch (IOException e1) {  88  e1.printStackTrace();  89  }  90  }  91  });  92  93 // 对菜单项添加事件  94 mi5.addActionListener(new ActionListener() {  95  @Override  96 public void actionPerformed(ActionEvent e) {  97 System.exit(0);  98  }  99  }); 100 101 // 设置窗体可显示 102 f.setVisible(true); 103  } 104 }
多级菜单



(
7)Netbeans的概述和使用 A:Netbeans的概述 是可以做Java开发的另一个IDE工具。 B:Netbeans的使用 1:四则运算 a:修改窗体图标 b:设置窗体居中 c:设置窗体皮肤 d:数据校验 2:登录注册GUI版 =============================================================================

 

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
原文链接:https://yq.aliyun.com/articles/607527
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章