当前位置: 首页 > news >正文

[javaSE] GUI(Action事件)

对自己定义的类规范化一下,事件和图形化组件分离出来

定义一个类FrameDemo

定义成员属性Frame frame

定义成员属性Botton

 

定义构造方法FrameDemo()

定义初始化方法init()

初始化方法中,new出来Frame(),参数:String的窗体名称

调用Frame对象的setBounds()方法,参数:xywidthheight

调用Frame对象的setLayout()方法,参数:FlowLayout对象

获取Button对象,new出来,构造参数:String的按钮文本

调用Frame对象的add()方法,参数:Button对象

调用Frame对象的setVisible()方法,参数:Booleantrue

 

定义事件方法myEvent()

调用Frame对象的addWindowListener()方法,参数:WindowListener对象,WindowListener是个接口,里面有七个方法要实现,找实现子类WindowAdapter,匿名内部类重写windowClosing()方法,传递进来参数:WindowEvent对象

调用Button对象的addActionListener()方法,参数:ActionListener对象,这个类是个接口,因此采用匿名内部类实现这个接口,实现方法actionPerformed()方法,传递进来参数:ActionEvent对象

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class FrameDemo {
    private Frame frame;
    private Button button;
    public FrameDemo() {
        init();
    }
    /**
     * 初始化
     */
    public void init(){
        frame=new Frame("测试窗体");
        frame.setBounds(300, 200, 200, 200);
        frame.setLayout(new FlowLayout());
        
        button=new Button("退出");
        frame.add(button);
        frame.setVisible(true);
        
        addEventAction();
    }
    /**
     * 添加事件
     */
    public void addEventAction(){
        //按钮退出
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        new FrameDemo();
    }

}

 

转载于:https://www.cnblogs.com/taoshihan/p/5565425.html

相关文章:

  • 如何查看表和索引的统计信息
  • 持续交付:价值主张
  • pyside 移动窗口到屏幕中间
  • 二进制单位
  • I00023 鸡兔同笼解法二
  • [FTP]pureftp部署和优化
  • cookie的secure属性详解
  • GIT笔记
  • JQuery选择器大全
  • 最终用户计算一周观察 002
  • 数据库 性能对比
  • 最近一些任务
  • B00009 C语言分割字符串库函数strtok
  • Gartner:2016年十大信息安全技术(含解读)
  • C# 值类型和引用类型
  • 2018一半小结一波
  • Flannel解读
  • MySQL QA
  • Redis 中的布隆过滤器
  • Vue.js 移动端适配之 vw 解决方案
  • 服务器之间,相同帐号,实现免密钥登录
  • 前嗅ForeSpider教程:创建模板
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我这样减少了26.5M Java内存!
  • 《码出高效》学习笔记与书中错误记录
  • linux 淘宝开源监控工具tsar
  • raise 与 raise ... from 的区别
  • (175)FPGA门控时钟技术
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (30)数组元素和与数字和的绝对差
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)换源+apt-get基础配置+搜狗拼音
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (一)Java算法:二分查找
  • (转)Mysql的优化设置
  • ..回顾17,展望18
  • .gitignore文件—git忽略文件
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET面试题(二)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • /boot 内存空间不够
  • [] 与 [[]], -gt 与 > 的比较
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [C++打怪升级]--学习总目录
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [hive]中的字段的数据类型有哪些
  • [IE9] IE9 RC版下载链接
  • [LeetCode]—Permutations 求全排列
  • [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱
  • [MySQL光速入门]003 留点作业...
  • [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟