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. Flink-v1.12官方网站翻译-P026-State Backends

    状态后台 Flink提供了不同的状态后端,指定状态的存储方式和位置. 状态可以位于Java的堆上或离堆.根据你的状态后端,Flink还可以为应用程序管理状态,这意味着Flink处理内存管理(必要时可能 ...

  2. JMM和volatile

    1.volatile 2.JMM 3.代码示例 package com.yanshu; class MyNmuber{ volatile int number=10; public void addT ...

  3. 2019 Multi-University Training Contest 7 Kejin Player(期望)

    题意:给定在当前等级升级所需要的花费 每次升级可能会失败并且掉级 然后q次询问从l到r级花费的期望 思路:对于单次升级的期望 我们可以列出方程: 所以我们可以统计一下前缀和 每次询问O1回答 #inc ...

  4. priority_queue()大根堆和小根堆(二叉堆)

    #include<iostream> #include <queue> using namespace std; int main() { //对于基础类型 默认是大顶堆 pr ...

  5. 分组背包 例题:hdu 1712 ACboy needs your help

    分组背包需求 有N件物品,告诉你这N件物品的重量以及价值,将这些物品划分为K组,每组中的物品互相冲突,最多选一件,求解将哪些物品装入背包可使这些物品的费用综合不超过背包的容量,且价值总和最大. 解题模 ...

  6. XHXJ's LIS HDU - 4352 最长递增序列&数位dp

    代码+题解: 1 //题意: 2 //输出在区间[li,ri]中有多少个数是满足这个要求的:这个数的最长递增序列长度等于k 3 //注意是最长序列,可不是子串.子序列是不用紧挨着的 4 // 5 // ...

  7. 【ybt金牌导航1-2-4】免费馅饼

    免费馅饼 题目链接:ybt金牌导航1-2-4 题目大意 有一个直线,在某一个时刻有一个馅饼会出现在一些位置,有它的价值. 一个人一开始可以站在直线的任意地方,然后他每个时刻可以不移动,或向任意一边移动 ...

  8. 通过k8s部署dubbo微服务并接入ELK架构

    需要这样一套日志收集.分析的系统: 收集 -- 能够采集多种来源的日志数据 (流式日志收集器) 传输 -- 能够稳定的把日志数据传输到中央系统 (消息队列) 存储 -- 可以将日志以结构化数据的形式存 ...

  9. Inkscape tricks

    Draw straight lines: click pencil button -> click once on your canvas(starting point) -> click ...

  10. Chrome Enhanced Protection

    Chrome Enhanced Protection chrome://settings/security?q=enhanced 站内外链跳转拦截 refs xgqfrms 2012-2020 www ...