GUI(图形界面编程)

您所在的位置:网站首页 gui界面设置 GUI(图形界面编程)

GUI(图形界面编程)

2023-10-28 17:08| 来源: 网络整理| 查看: 265

(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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3