import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/*
* 程序的功能是显示一个窗口,窗口上有一个按钮,当单击这个按钮的时候屏幕上出现一个圆
* */
public class Fire extends JPanel {public final static int CIRCLE=1,SQUARE=2;//定义两个常量,这个地方要知道的是对于用final关键字定义
    //我们应该用类名直接对其进行引用
    private int shape;//定义一个整型的变量,这个变量和利用final关键字声明的常量是可以相互赋值的
    @Override
    public void paintComponent(Graphics g)//对JPanel中的paintComponent这个关键字进行重写
    {super.paintComponent(g);//重写的时候要用super对父类传递画笔
        g.setColor(new Color(0,255,255));
        if(shape==CIRCLE)g.fillOval(50,10,60,60);//画一个圆前两个是坐标,后两个是长和宽
        else if(shape==SQUARE)g.fillRect(50,10,60,60);//画一个矩形,并且这样的矩形是填充好的,填充的颜色是画笔的颜色
    }public static void main(String args[]){CustomPanelTest application=new CustomPanelTest();
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }//set shape value repaint Custom Panel
    public void draw(int shapeToDraw)//定义方法draw,这个里面有一个函数
    {shape=shapeToDraw;
        repaint();
    }
}class CustomPanelTest extends JFrame{//定义一个类,这个类是继承了JFrame这个类
    private JPanel buttonPanel;//定义一个面板
    private Fire myPanel;//定义一个上面的类的对象
    private JButton circleButton,squareButton;//定义一个JButton按钮
    public CustomPanelTest() {//构造函数
        super("Custom Test");//给基类传递参数,其实也是设置对框的名称
        myPanel = new Fire();//给myPanel进行复制
        myPanel.setBackground(Color.green);
        squareButton = new JButton("Squre");//给创建按钮,并且在上面添加文字
        squareButton.addActionListener(//添加事件消息
                new ActionListener() {public void actionPerformed(ActionEvent event) {myPanel.draw(Fire.CIRCLE);//当事件发生的时候
                    }});
        buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(1, 2));
        buttonPanel.add(squareButton);
        Container container = getContentPane();
        container.add(myPanel, BorderLayout.CENTER);
        container.add(buttonPanel, BorderLayout.SOUTH);
        setSize(300, 150);
        setVisible(true);
    }}//这个程序初学者来说感觉有很大的帮助,在第二个类中有很多的内容,也让我们
接触到一些类的用法,现在来分析分析一下第二个类:
第二个类继承了JFrame这个类,显示是对窗口的操作,其实在这个然后在这个类中我们创建JPanel面板的对象,和我们自定义的Fire这个类的对象,还有JButton的对象,然后这个程序的主体部分,也可以说是这个类的主体部分是构造函数,在这个构造函数中我们首先是调用super这个函数对父类进行了赋值,其实也是设置窗口的标题,除了这些构造函数也没有忘记自己的本分工作,对上面我们定义的属性都进行了赋值,最精彩的部分也是对初学者来说最为可以学到东西的还是对按钮添加事件,和鼠标不同之处这个地方是用到的函数addActionListener(),这个函数的参数是new ActionListener()然后是一个“{”接着函数actionPerformed进行重写,这个函数的参数是一个事件(ActionEvent event),然后添加我们要执行的步骤,其实我一直不清楚这个地方的添加按钮消息或者是添加监听作为一个函数来对待,其实可以作为一种动作来对待然后我们将这个按钮添加到面板上,积累了两个面板之后我们在重建一个Container面板,然后将我们创建的面板都添加到这个面板上去,最后再将这个面板添加到窗口上,这个就是该程序第二个类的主要的思想和步骤!
												

JButton类,简单应用相关推荐

  1. java9String类简单了解

    public class jh_01_String类简单了解 {public static void main(String[] args) {/** 函数:完成特定功能的代码块.* nextInt( ...

  2. php数值操作,php数值计算num类简单操作示例

    php数值计算num类简单操作示例,在线,计算器,小数,整数,程序设计 php数值计算num类简单操作示例 易采站长站,站长之家为您整理了php数值计算num类简单操作示例的相关内容. 本文实例讲述了 ...

  3. java 大数实现_Java中的大数类简单实现

    Java中的大数类简单实现 Java中的大数还是挺好用,而且很方便,所以将其罗列如下,以备使用 import java.math.*; import java.util.*; //基本使用如下: x ...

  4. SimpleDateFormat类(简单日期格式类)

    SimpleDateFormat类(简单日期格式类) 它是一个具体的类(相应的最底层类),用于以区域设置铭感的方式格式化和解析日期.重点学习日期格式化和解析 日期和时间格式由日期和时间模拟字符串指定, ...

  5. Android APP更新下载工具类——简单封装DownloadManager

    几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...

  6. ThinkPHP 数据库表结构处理类(简单实用)

    <?php /* *mysql表结构处理类 *创建数据表,增加,编辑,删除表中字段 * */ classMysqlManage{ /* *创建数据库,并且主键是aid *table要查询的表名 ...

  7. php注入类,简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注入类 ...

  8. Activity、Fragment、Dialog基类简单整理

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 这里简单记录下Activity.Fragment.Dialog基类中的常规写法,后续根据项目需求进行相应的扩展. BaseActiv ...

  9. php 高效缓存类,简单高效的文件缓存php类

    简单高效的文件缓存php类 class FileCache { public $keyPrefix = ''; public $cachePath = ''; public $cacheFileSuf ...

最新文章

  1. NO.7:别让异常逃离析构函数
  2. 从喧闹与富有中搞懂搜索和拓扑
  3. Unsupported Hardware Detected
  4. VC++、MFC、COM和ATL的区别
  5. iOS小知识点(非UI部分)
  6. 阿里P8架构师谈:JVM的内存分配、运行原理、回收算法机制
  7. 利用计算机卸载,电脑使用痕迹彻底清理工具(无影无踪WYWZ)
  8. 线性代数【9】 - 特征值和特征向量
  9. Input 输入设备驱动框架
  10. Docker的mysql镜像_详解docker下的Mysql镜像的使用方法
  11. 连续子序列最大和2种方法
  12. 数据库与REDIS缓存数据一致性解决方案
  13. 国美金融APP如何提前结清所有贷款
  14. 亿能第二期测试沙龙-《企业自动化测试专题研讨会》4月中旬举行
  15. markdown快捷键大全
  16. 创业故事:挖人的手段
  17. Certificate、Provisioning Profile、App ID的介绍及其之间的关系
  18. LVDS RX的底层逻辑
  19. 机器翻译评估标准介绍和计算方法
  20. Oracle 批量插入数据-插入民族数据

热门文章

  1. SQL学习笔记 where子句用法,like关键字 嵌套查询
  2. 刚刚学Asp.Net的人要告诉的几件事
  3. 阿里新框架发布!干掉Spring Cloud,换下Dubbo,微服务王者来了!
  4. 我写了一个脚本,可在“任意”服务器上执行命令!
  5. 对于注册中心,ZooKeeper、Eureka 哪个更合适?
  6. Java高并发编程基础之AQS
  7. 炸裂!MySQL 82 张图带你飞!
  8. 39岁单身程序员入住养老院,提前过上退休生活?网友:羡慕又心酸!
  9. JVM的架构和执行过程
  10. 你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了...