1.输入框 TextField监听

 package com.kuang.lesson02;
 ​
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 ​
 public class TestText01 {
     public static void main(String[] args) {
         //启动
         new MyFrame();
    }
 ​
 }
 class MyFrame extends Frame{
     public MyFrame(){
         TextField textField = new TextField();
         add(textField);
 ​
         //监听这个文本框输入的文字
         MyActionListener2 myActionListener2 = new MyActionListener2();
         //按下enter就会触发这个输入框的事件
         textField.addActionListener(myActionListener2);
 ​
         //设置替换编码
         textField.setEchoChar('*');
 ​
         setVisible(true);
         pack();
 ​
    }
 }
 class MyActionListener2 implements ActionListener{
     @Override
     public  void actionPerformed(ActionEvent e){
        TextField field = (TextField)e.getSource();//获得一些资源,即返回的一个对象
         System.out.println(field.getText());//获得输入框的文本
         field.setText("");//不能设置为null,null为一个对象,""为字符串
 ​
 ​
    }
 }
 ​

2 简易计算器,组合+内部类回顾复习

oop原则:组合,大于继承

面向过程:

 package com.kuang.lesson02;
 ​
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 ​
 //简易计算器
 ​
 public class TestCalc {
     public static void main(String[] args) {
         new Calculator();
 ​
    }
 }
 //计算器类
 class  Calculator extends Frame{
     public Caluctor(){
         //3个文本框
         TextField num1 = new TextField(10);//括号里表示最大能填的字符数
         TextField num2 = new TextField(10);//字符数
         TextField num3 = new TextField(20);//字符数
 ​
 ​
 ​
         //1个按钮
         Button button = new Button("=");
         button.addActionListener(new MyCalculatorListener(num1,num2,num3));
 ​
 ​
 ​
         //1个标签
         Label label = new Label("+");
 ​
         //布局
         setLayout(new FlowLayout());
         add(num1);
         add(label);
         add(num2);
         add(button);
         add(num3);
 ​
         pack();
         setVisible(true);
 ​
 ​
    }
 }
 ​
 //监听器类
 class MyCalculatorListener implements ActionListener{
 ​
     //获取三个变量
     private TextField num1, num2, num3;
     public MyCalculatorListener(TextField num1, TextField num2, TextField num3){
         this.num1 = num1;
         this.num2 = num2;
         this.num3 = num3;
    }
 ​
     @Override
     public void actionPerformed(ActionEvent e){
         //1.获得加数和背加数
         int n1 = Integer.parseInt(num1.getText());
         int n2 = Integer.parseInt(num2.getText());
 ​
 ​
         //2.将这个值 加法运算后,放到第三个框
         num3.setText(""+(n1 + n2));
 ​
         //3.清除前两个框
         num1.setText("");
         num2.setText("");
 ​
 ​
    }
 }

完全改造为面向对象写法:

 package com.kuang.lesson02;
 ​
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 ​
 //简易计算器
 ​
 public class TestCalc {
     public static void main(String[] args) {
         new Calculator().loadFrame();
 ​
    }
 }
 //计算器类
 class  Calculator extends Frame{
 ​
     //属性
     TextField num1,num2,num3;
 ​
     //方法
     public void loadFrame(){
         //3个文本框
          num1 = new TextField(10);//括号里表示最大能填的字符数
          num2 = new TextField(10);//字符数
          num3 = new TextField(20);//字符数
         //1个按钮
         Button button = new Button("=");
         //1个标签
         Label label = new Label("+");
         button.addActionListener(new MyCalculatorListener(this));//this代表自己
 ​
         //布局
         setLayout(new FlowLayout());
         add(num1);
         add(label);
         add(num2);
         add(button);
         add(num3);
 ​
         pack();
         setVisible(true);
 ​
 ​
    }
 ​
 ​
 ​
 ​
 ​
 ​
 ​
 }
 ​
 //监听器类
 class MyCalculatorListener implements ActionListener{
 ​
     //获取计算器这个对象,在一个类中组合另外一个类
    Calculator calculator = null;
     public MyCalculatorListener(Calculator calculator){
         this.calculator = calculator;
 ​
    }
 ​
     @Override
     public void actionPerformed(ActionEvent e){
         //1.获得加数和背加数
         //2.将这个值 加法运算后,放到第三个框
         //3.清除前两个框
        int n1 = Integer.parseInt(calculator.num1.getText());
        int n2 = Integer.parseInt(calculator.num2.getText());
        calculator.num3.setText(""+(n1+n2));
        calculator.num1.setText("");
        calculator.num2.setText("");
 ​
 ​
 ​
 ​
 ​
    }
 }

内部类:

更好的包装:

 package com.kuang.lesson02;
 ​
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 ​
 //简易计算器
 ​
 public class TestCalc {
     public static void main(String[] args) {
         new Calculator().loadFrame();
 ​
    }
 }
 //计算器类
 class  Calculator extends Frame{
 ​
     //属性
     TextField num1,num2,num3;
 ​
     //方法
     public void loadFrame(){
         //3个文本框
          num1 = new TextField(10);//括号里表示最大能填的字符数
          num2 = new TextField(10);//字符数
          num3 = new TextField(20);//字符数
         //1个按钮
         Button button = new Button("=");
         //1个标签
         Label label = new Label("+");
         button.addActionListener(new MyCalculatorListener());//this代表自己
 ​
         //布局
         setLayout(new FlowLayout());
         add(num1);
         add(label);
         add(num2);
         add(button);
         add(num3);
 ​
         pack();
         setVisible(true);
 ​
 ​
    }
     //监听器类
     //内部类最大的好处,就是可以畅通无阻的访问外部的属性和方法
 ​
     private class MyCalculatorListener implements ActionListener{
 ​
         @Override
         public void actionPerformed(ActionEvent e) {
             //1.获得加数和背加数
             //2.将这个值 加法运算后,放到第三个框
             //3.清除前两个框
             int n1 = Integer.parseInt(num1.getText());
             int n2 = Integer.parseInt(num2.getText());
             num3.setText("" + (n1 + n2));
             num1.setText("");
             num2.setText("");
 ​
        }
    }
 ​
 ​
 ​
 ​
 ​
 ​
 }
 ​
 ​
 ​
 ​
 ​
 ​
 ​
 ​
 ​
 ​

3 画笔

 package com.kuang.lesson03;
 ​
 import java.awt.*;
 ​
 public class TestPaint {
     public static void main(String[] args) {
         new MyPaint().loadFrame();
 ​
    }
 }
 class MyPaint extends Frame{
     public void loadFrame(){
         setBounds(200,200,600,500);
         setVisible(true);
    }
     @Override
     public void paint(Graphics g) {
         //画笔,需要有颜色,画笔可以画画
        // g.setColor(Color.red);
         //g.drawOval(100,100,100,100);
         g.fillOval(100,100,100,100);//实心的圆
 ​
        // g.setColor(Color.blue);
         g.fillRect(150,200,200,200);
 ​
         //养成习惯,画笔用完,将他还原到最初的颜色
 ​
    }
 }

4鼠标监听

 package com.kuang.lesson03;
 ​
 //鼠标监听事件
 ​
 import java.awt.*;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.ArrayList;
 import java.util.Iterator;
 ​
 public class TestMouseListener {
     public static void main(String[] args) {
         new MyFrame("画图");
 ​
    }
 }
 //自己的类
 class MyFrame extends Frame{
     //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
     ArrayList points;
     public MyFrame(String title){
         super(title);
         setBounds(200,200,400,400);
         //存鼠标点击的点
        points =  new ArrayList<>();
 ​
 ​
         setVisible(true);
         //鼠标监听器,针对于这个窗口
         this.addMouseListener(new MyMouseListener());
 ​
 ​
 ​
    }
 ​
     @Override
     public void paint(Graphics g) {
        //画画,监听鼠标的事件
         Iterator iterator = points.iterator();
         while (iterator.hasNext()){
             Point point = (Point)iterator.next();
             g.setColor(Color.BLUE);
             g.fillOval(point.x,point.y,10,10);
        }
 ​
 ​
    }
 ​
     //添加一个点到界面上
     public void addPaint(Point point){
         points.add(point);
 ​
    }
 ​
     //适配器模式
     private class MyMouseListener extends MouseAdapter{
         //鼠标 按下,弹起,按住不放
 ​
 ​
         @Override
         public void mousePressed(MouseEvent e) {//e获取鼠标的资源
             MyFrame frame = (MyFrame) e.getSource();
             //这里我们点击的时候,就会在界面上产生一个点!画
             //这个点就是鼠标的点
             frame.addPaint(new Point(e.getX(),e.getY()));
 ​
             //每次点击鼠标都需要重新画一遍
             frame.repaint();//刷新
 ​
        }
    }
 ​
 ​
 ​
 ​
 }

5窗口监听

 package com.kuang.lesson03;
 ​
 import java.awt.*;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 ​
 public class TestWindow {
     public static void main(String[] args) {
         new WindowFrame();
 ​
    }
 }
 class WindowFrame extends Frame{
     public WindowFrame() {
         setBackground(Color.blue);
         setBounds(100,100,200,200);
         setVisible(true);
         //addWindowListener(new MyWindowListener());
         this.addWindowListener(
                 //匿名内部类
                 new WindowAdapter() {
                     //关闭窗口
 ​
                     @Override
                     public void windowClosing(WindowEvent e) {
                         System.out.println("windowClosing");
                         System.exit(0);
                    }
 ​
                     //激活窗口
                     @Override
                     public void windowActivated(WindowEvent e) {
                         WindowFrame source = (WindowFrame)e.getSource();
                         source.setTitle("被激活了");
                         System.out.println("windowActivated");
                    }
 ​
 ​
                }
        );
 ​
    }
 ​
 }

6键盘监听

 package com.kuang.lesson03;
 //键
 ​
 import java.awt.*;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
 ​
 public class TestKeyListener {
     public static void main(String[] args) {
         new KeyFrame();
 ​
    }
 }
 class KeyFrame extends Frame{
     public KeyFrame() {
       setBounds(1,2,300,400);
       setVisible(true);
 ​
       this.addKeyListener(new KeyAdapter() {
           //键盘按下
           @Override
           public void keyPressed(KeyEvent e) {
               //获得键盘下的键是哪一个,获取当前键盘的码
 ​
             int keyCode=  e.getKeyCode();
               System.out.println(keyCode);//不需要去记录这个数值,直接使用静态属性VK_XXX
             if(keyCode == KeyEvent.VK_UP){
                 System.out.println("你按下了上键");
 ​
            }
             //根据按下不同操作,产生不同结果
          }
      });
    }
 }

第35天学习打卡(输入框 TextField监听 简易计算器,组合+内部类回顾复习 画笔 鼠标监听 窗口监听 键盘监听)的更多相关文章

  1. Jetpack Compose学习(3)——图标(Icon) 按钮(Button) 输入框(TextField) 的使用

    原文地址: Jetpack Compose学习(3)--图标(Icon) 按钮(Button) 输入框(TextField) 的使用 | Stars-One的杂货小窝 本篇分别对常用的组件:图标(Ic ...

  2. Android学习笔记-EditText(输入框)(二)

    6.控制EditText四周的间隔距离与内部文字与边框间的距离 我们使用margin相关属性增加组件相对其他控件的距离,比如android:marginTop = "5dp" 使用 ...

  3. 学习《Python核心编程》做一下知识点提要,方便复习(一)

    学习<Python核心编程>做一下知识点提要,方便复习. 计算机语言的本质是什么? a-z.A-Z.符号.数字等等组合成符合语法的字符串.供编译器.解释器翻译. 字母组合后产生各种变化拿p ...

  4. 菜鸟学习Struts——简易计算器

    这是学习Struts的一个简单的例子文件结构如下: 1.配置Struts环境 2.新建input.jsp,success.jsp,error.jsp input.jsp代码如下: <%@ pag ...

  5. 大一C语言学习笔记(10)---编程篇--制作简易计算器,支持加,减,乘,除,取余运算,要求 0 bug

    博主自开学初就一直在努力为自己的未来寻找学习方向,学习编程嘛,尽量还是要抱大腿的,所以我就加入了我们学校的智能设备研究所,别的不说,那的学长们看起来是真的很靠谱,学长们的学习氛围也超级浓厚,所以我就打 ...

  6. Flutter的输入框TextField

    TextFiled组件的API 先来看一下TextFiled的构造方法: const TextField({ Key key, this.controller, this.focusNode, thi ...

  7. cocos2dx 3.2 解决输入框(TextField,TextFieldTTF) 中文乱码问题

    近期开发cocos2dx 项目,做一个小游戏.(个人喜欢用最新版本号) 没系统学习就是问题多多,遇到了非常多问题,比方全部的opengl api都必须在主线程中调用, 这让我在多线程载入方面吃了不少亏 ...

  8. 第49天学习打卡(CSS 层次选择器 结构伪类选择器 属性选择器 美化网页元素 盒子模型)

    推荐书籍:码出高效: Java 开发手册 2.2 层次选择器 idea里代码规范是按:ctrl +alt+L快捷键 注释快捷键:ctrl+/ 1.后代选择器:在某个元素的后面 祖爷爷 爷爷 爸爸 你 ...

  9. 第48天学习打卡(HTML 行内元素和块元素 列表 表格 视频和音频 页面结构分析 iframe内联框架 表单语法 )

    行内元素和块元素 块元素 ​ 无论内容多少,该元素独占一行 ​ (p.h1-h6) 行内元素 ​ 内容撑开宽度,左右都是行内元素的可以排在一行 ​ (a.strong.em...) 列表 什么是列表 ...

随机推荐

  1. Java ArrayList源码分析(含扩容机制等重点问题分析)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  2. 用鸿蒙开发AI应用(八)JS框架访问内核层

    目录:前言JS应用开发框架原理内置模块实现ace模块开发界面程序 前言上回说到,用C++来写UI界面的开发效率不如JS+HTML来的高,但设备开发又免不了要通过内核态来操作硬件,这里我们就要先打通从J ...

  3. 洛谷P4719 【模板】"动态 DP"&动态树分治

    [模板]"动态 DP"&动态树分治 第一道动态\(DP\)的题,只会用树剖来做,全局平衡二叉树什么的就以后再学吧 所谓动态\(DP\),就是在原本的\(DP\)求解的问题上 ...

  4. Codeforces Round #547 (Div. 3) F1/2. Same Sum Blocks (Easy/Hard) (贪心,模拟)

    题意:有一长度为\(n\)的数组,求最多的区间和相同的不相交的区间的个数. 题解:我们可以先求一个前缀和,然后第一层循环遍历区间的右端点,第二层循环枚举左端点,用前缀和来\(O(1)\)求出区间和,\ ...

  5. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲网上区域赛模拟赛. A.Easy Equation (前缀和/差分)

    题意:RT,给你四个数\(a,b,c,d\),求\(x+y+z=k\)的方案数. 题解:我们可以先枚举\(x\)的值,然后\(x+y\)能取到的范围一定是\([x,x+b]\),也就是说这个区间内每个 ...

  6. JavaScript——DOMM

    文本节点 != 文本内容

  7. 鸟哥的linux私房菜——第十二章学习(Shell Scripts)

    第十二章  Shell Scripts 1.0).什么是shell scripts? script 是"脚本.剧本"的意思.整句话是说, shell script 是针对 shel ...

  8. Linux 驱动框架---platform驱动框架

    Linux系统的驱动框架主要就是三个主要部分组成,驱动.总线.设备.现在常见的嵌入式SOC已经不是单纯的CPU的概念了,它们都会在片上集成很多外设电路,这些外设都挂接在SOC内部的总线上,不同与IIC ...

  9. 技术分享: CSS3 系列

    技术分享: CSS3 系列 css 一键换肤 css 打印样式,媒体查询 css 禁用选择 css 性能优化 css 计算单位 css 3D 特效 refs xgqfrms 2012-2020 www ...

  10. vue 自动注册全局组件

    vue 自动注册全局组件 vue 注册全局组件的方式 const plugins = { install(Vue) { const requireComponent = require.context ...