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. linux 一分钟搭建zookeeper linux 单机版(亲测可用)

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gzt ...

  2. .NET 微服务

    前文传送门: 什么是云原生? 现代云原生设计理念 Microservices 微服务是构建现代应用程序的一种流行的体系结构样式,云原生系统拥抱微服务. 微服务是由一组(使用共享结构交互的.独立的小块服 ...

  3. Codeforces Round #652 (Div. 2) A. FashionabLee(几何)

    题目链接:https://codeforces.com/contest/1369/problem/A 题意 判断正 $n$ 边形能否通过旋转使得一边与 $x$ 轴平行,一边与 $y$ 轴平行. 题解 ...

  4. ACM-ICPC 2018 徐州赛区网络预赛(8/11)

    ACM-ICPC 2018 徐州赛区网络预赛 A.Hard to prepare 枚举第一个选的,接下来的那个不能取前一个的取反 \(DP[i][0]\)表示选和第一个相同的 \(DP[i][1]\) ...

  5. Educational Codeforces Round 84 E. Count The Blocks

    传送门: 1327- E. Count The Blocks  题意:给你一个整数n,求10^n内(每个数有前导零)长度为1到n的块分别有多少个.块的含义是连续相同数字的长度. 题解:从n=1开始枚举 ...

  6. C. New Year Book Reading

    New Year is coming, and Jaehyun decided to read many books during 2015, unlike this year. He has n b ...

  7. tesseract-ocr的安装及使用pycharm来运行

    1.可以在:http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe 下载一个exe文件,然后直接按照提 ...

  8. Codeforces Round #241 (Div. 2) B. Art Union (DP)

    题意:有\(n\)个画家,\(m\)幅画,每个画家负责\(m\)幅画,只有前一个画家画完时,后面一个画家才能接着画,一个画家画完某幅画的任务后,可以开始画下一幅画的任务,问每幅画最后一个任务完成时的时 ...

  9. Educational Codeforces Round 94 (Rated for Div. 2) C. Binary String Reconstruction (构造)

    题意:给你一个字符串\(s\),原字符串为\(w\),如果\(i>x\)且\(w_{i-x}=1\),那么\(s_{i}=1\),如果\(i+x\le n\)且\(w_{i+x}=1\),那么\ ...

  10. Codeforces Round #515 (Div. 3) B. Heaters (贪心)

    题意:有\(n\)个桩子,\(1\)表示该位置有一个火炉,可以使两边距离为\(r\)的范围照亮,问最少使用多少炉子使得所有范围都被照亮. 题解:贪心,首先我们从\(r\)位置开始向左找,如果找到了就记 ...