(1)GUI 与CLI
GUI
•Graphical User Interface(图形用户接口)。
•用图形的形式,来显示计算机操作的界面,这样更不便更直观。
CLI
•Command line User Interface (命令行用户接口)
•就是常见的Dos命令行操作。
•须要记忆一些罕用的命令,操作不直观。
(2)相干的两个包:
java.awt:
Abstract Window ToolKit (形象窗口工具包),须要调用本地零碎办法实现性能。属重量级控件。
javax.swing:
在AWT的根底上,建设的一套图形界面零碎,其中提供了更多的组件,而且齐全由Java实现。加强了移植性,属轻量级控件。
(3)GUI的继承体系
组件:组件就是对象
容器组件:是能够存储根本组件和容器组件的组件。
根本组件:是能够应用的组件,然而必须依赖容器。
(4)事件监听机制
事件源:事件产生的中央
事件:就是要产生的事件
事件处理:就是针对产生的事件做出的解决计划
事件监听器:就是把事件源和事件关联起来
(5)适配器模式
接口
形象适配器类
实现类
(6)案例:
A:创立窗体案例
public class FrameDemo { public static void main(String[] args) { // 创立窗体对象 // Frame f = new Frame(); // Frame(String title) Frame f = new Frame("林青霞"); // 设置窗体题目 f.setTitle("HelloWorld"); // 设置窗体大小 f.setSize(400, 300); // 单位:像素 // 设置窗体地位 f.setLocation(400, 200); // 一个办法搞定 //f.setBounds(400, 200, 400, 300); // 调用一个办法,设置让窗体可见 f.setVisible(true); // System.out.println("helloworld"); }}
B:窗体敞开案例
import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.WindowListener; public class FrameDemo { public static void main(String[] args) { // 创立窗体对象 Frame f = new Frame("窗体敞开案例"); // 设置窗体属性 f.setBounds(400, 200, 400, 300); // 让窗体敞开 //事件源 //事件:对窗体的解决 //事件处理:敞开窗口(System.exit(0)); //事件监听// f.addWindowListener(new WindowListener() {// @Override// public void windowOpened(WindowEvent e) {// }// // @Override// public void windowIconified(WindowEvent e) {// }// // @Override// public void windowDeiconified(WindowEvent e) {// }// // @Override// public void windowDeactivated(WindowEvent e) {// }// // @Override// public void windowClosing(WindowEvent e) {// System.exit(0);// }// // @Override// public void windowClosed(WindowEvent e) {// }// // @Override// public void windowActivated(WindowEvent e) {// }// }); //用适配器类改良 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // 设置窗体可见 f.setVisible(true); }}
C:窗体增加按钮并对按钮增加事件案例。
/* * 针对用户操作的四种性能 */public interface UserDao {public abstract void add(); public abstract void delete(); public abstract void update(); public abstract void find();}
public class UserDaoImpl implements UserDao { @Override public void add() { System.out.println("增加性能"); } @Override public void delete() { System.out.println("删除性能"); } @Override public void update() {System.out.println("批改性能"); } @Override public void find() { System.out.println("查找性能"); } }
/*
* 问题:
* 接口(办法比拟多) -- 实现类(仅仅应用一个,也得把其余的实现给提供了,哪怕是空实现)
* 太麻烦了,
* 解决方案:
* 接口(办法比拟多) -- 适配器类(实现接口,仅仅空实现) -- 实现类(用哪个重写哪个)
*/
public abstract class UserAdapter implements UserDao { @Override public void add() { } @Override public void delete() { } @Override public void update() { } @Override public void find() { } }
public class UserDaoImpl2 extends UserAdapter { @Override public void add() { System.out.println("增加性能"); }}
public class UserDaoDemo { public static void main(String[] args) {UserDao ud = new UserDaoImpl(); ud.add(); // 我没有说咱们须要四种性能都实现啊。 UserDao ud2 = new UserDaoImpl2(); ud2.add(); }}
界面中的组件布局。
public class FrameDemo {public static void main(String[] args) { // 创立窗体对象 Frame f = new Frame("增加按钮"); // 设置属性 f.setBounds(400, 200, 400, 300); // 设置布局为流式布局 f.setLayout(new FlowLayout()); // 创立按钮对象 Button bu = new Button("点我啊"); // bu.setSize(20, 10); // 把按钮增加到窗体 f.add(bu); // 设置窗体能够敞开 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); bu.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("你再点试试"); } }); // 窗体显示 f.setVisible(true); }}
D:把文本框外面的数据转移到文本域
import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; public class FrameDemo { public static void main(String[] args) { / 创立窗体对象 Frame f = new Frame("数据转移"); // 设置窗体属性和布局 f.setBounds(400, 200, 400, 300); f.setLayout(new FlowLayout()); // 创立文本框 final TextField tf = new TextField(20); // 创立按钮 Button bu = new Button("数据转移"); // 创立文本域 final TextArea ta = new TextArea(10, 40); // 把组件增加到窗体 f.add(tf); f.add(bu); f.add(ta); // 设置窗体敞开 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // 对按钮增加事件 bu.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 获取文本框的值 String tf_str = tf.getText().trim(); // 清空数据 tf.setText(""); // 设置给文本域 // ta.setText(tf_str); // 追加和换行 ta.append(tf_str + "\r\n"); //获取光标 tf.requestFocus(); } }); // 设置窗体显示 f.setVisible(true); }}
E:更改背景色
import java.awt.Button;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class FrameDemo { public static void main(String[] args) { // 创立窗体对象final Frame f = new Frame("更改背景色"); // 设置窗体属性和布局 f.setBounds(400, 200, 400, 300); f.setLayout(new FlowLayout()); // 创立四个按钮 Button redButton = new Button("红色"); Button greenButton = new Button("绿色"); Button buleButton = new Button("蓝色"); // 增加按钮 f.add(redButton); f.add(greenButton); f.add(buleButton); // 设置窗体敞开 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // 对按钮增加动作事件 // redButton.addActionListener(new ActionListener() { // @Override // public void actionPerformed(ActionEvent e) { // f.setBackground(Color.RED); / } // }); // 对按钮增加鼠标点击事件 // redButton.addMouseListener(new MouseAdapter() { // @Override // public void mouseClicked(MouseEvent e) { // f.setBackground(Color.RED); // } // }); // 对按钮增加鼠标的进入事件 redButton.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { f.setBackground(Color.RED); } }); redButton.addMouseListener(new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { f.setBackground(Color.WHITE); } }); greenButton.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { f.setBackground(Color.GREEN); } }); greenButton.addMouseListener(new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { f.setBackground(Color.WHITE); } }); buleButton.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { f.setBackground(Color.BLUE); } }); buleButton.addMouseListener(new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { f.setBackground(Color.WHITE); } }); // 设置窗体显示 f.setVisible(true); }}
F:设置文本框外面不能输出非数字字符
import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Label;import java.awt.TextField;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; /* * 你输出的如果是非数字字符,就勾销你键盘录入的成果。 */public class FrameDemo { public static void main(String[] args) { // 创立窗体对象并设置属性 Frame f = new Frame("不能输出非数字字符"); f.setBounds(400, 200, 400, 300); f.setLayout(new FlowLayout()); // 创立Label标签对象 Label label = new Label("请输出你的QQ号码,不能是非数字,不信你试试"); TextField tf = new TextField(40); // 增加到窗体上 f.add(label); f.add(tf); // 设置窗体敞开 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // 给文本框增加事件 tf.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { // 如果你获得的字符不是数字字符就勾销事件 // 思路:先获取字符,判断字符,勾销事件 // char getKeyChar() char ch = e.getKeyChar();// System.out.println(ch); if(!(ch>='0' && ch<='9')){ e.consume(); } } }); // 设置窗体可见 f.setVisible(true); }}
G:一级菜单
import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; /* * 一级菜单 */public class FrameDemo { public static void main(String[] args) { // 创立窗体对象并设置属性 Frame f = new Frame("一级菜单"); f.setBounds(400, 200, 400, 300); f.setLayout(new FlowLayout()); // 创立菜单栏 MenuBar mb = new MenuBar(); // 创立菜单 Menu m = new Menu("文件"); // 创立菜单项 MenuItem mi = new MenuItem("退出零碎"); // 谁增加谁呢 m.add(mi); mb.add(m); // 设置菜单栏 f.setMenuBar(mb); // 设置窗体敞开 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); mi.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); // 设置窗体可见 f.setVisible(true); }}
H:多级菜单
import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException; /* * 多级菜单 */public class FrameDemo {public static void main(String[] args) { // 创立窗体对象并设置属性 final Frame f = new Frame("多级菜单"); f.setBounds(400, 200, 400, 300); f.setLayout(new FlowLayout()); final String name = f.getTitle(); // 创立菜单栏 MenuBar mb = new MenuBar(); // 创立菜单 Menu m1 = new Menu("文件"); Menu m2 = new Menu("更改名称"); // 创立菜单项 final MenuItem mi1 = new MenuItem("好好学习");final MenuItem mi2 = new MenuItem("天天向上"); MenuItem mi3 = new MenuItem("复原题目"); MenuItem mi4 = new MenuItem("关上记事本"); MenuItem mi5 = new MenuItem("退出零碎"); // 谁增加谁呢 m2.add(mi1); m2.add(mi2); m2.add(mi3); m1.add(m2); m1.add(mi4); m1.add(mi5); mb.add(m1); // 设置菜单栏 f.setMenuBar(mb); // 设置窗体敞开 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); mi1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { f.setTitle(mi1.getLabel()); } }); mi2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { f.setTitle(mi2.getLabel()); } }); mi3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { f.setTitle(name); } }); mi4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Runtime r = Runtime.getRuntime(); try { r.exec("notepad"); } catch (IOException e1) { e1.printStackTrace(); } } }); mi5.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); // 设置窗体可见 f.setVisible(true); }}
</article>
总结:
总的来说:GUI : Graphical User Interface (图形用户接口)。
用图形的模式显示计算机操作的界面,更直观。