(96)GUI:鼠标事件、键盘事件、按钮事件、窗体事件

布局管理器:
容器中的组件的排放发生,就是布局。
常见而定布局管理器:
这里写图片描述
BorderLayout:若没有指定方向,则填充整个容器
创建图形化界面步骤:
1,创建frame窗体
2,对窗体进行基本设置,比如大小、位置、布局
3,定义组件
4,将组件通过窗体的add方法添加到窗体中
5,让窗体显示,同过setVisible(true)

事件监听机制:
这里写图片描述
特点:事件源、事件、监听器、事件处理
事件源:就是awt包或者swing包中的那些图形界面组件
事件:每一个事件源都有自己特有的而对应事件和共性事件
监听器:将可以触发某个事件的动作(不止一个)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。编程人员可做的就是对产生的动作进行处理。

①Window类中public void addWindowListener(WindowListener l):添加指定的窗口监听器,以从此窗口接收窗口事件(为窗体注册监听器)。
②WindowListener:接口,内部有六个抽象方法(接口中全是抽象方法,不用显式写)。
但是平时程序开发并不需要将这六个全部实现,可以在“所有已实现的接口”类中寻找实现的子类 WindowAdapter(在Java.awt.event包中)。
③WindowAdapter:它实现了其父类的6个方法,但是其方法内部为空{},因为其方法的方法体全为空,所以创建对象没有意义,所以定义成了抽象类,该类的作用,就是让其他类继承该类。

import java.awt.*;
public class demo {

    public static void main(String[] args) {

        Frame f=new Frame("my awt");

        f.setSize(500, 400);
        f.setLocation(300, 200);
        f.setLayout(new FlowLayout());
        Button b=new Button("我是按钮");
        f.add(b);//将按钮和窗体相结合
        f.addWindowListener(new MyListener());//窗体注册监听器
        f.setVisible(true);
    }

}

import java.awt.event.*;

public class MyListener extends WindowAdapter {

    public  void windowClosing(WindowEvent e) {
        System.out.println("我关");
        System.exit(0);
    }
    public void windowActivated(WindowEvent e) {
        System.out.println("我活了哈哈");//窗体前置
    }
    public void windowOpened(WindowEvent e) {
        System.out.println("我被打开了");
    }

}

若只是实现一个方法,就创建一个类,比较麻烦,可以写匿名内部类

f.addWindowListener(new WindowAdapter() {
            public  void windowClosing(WindowEvent e) {
                System.out.println("我关");
                System.exit(0);
            }

        });

这里写图片描述

其实在实际开发中,要将要做的窗体以及里面的控件等封装成类,在main中只做测试

import java.awt.*;
import java.awt.event.*;
public class FrameDemo {

    //定义该图形中所需要的组件的引用
    private Frame f;
    private Button but;
    FrameDemo(){
        init();
    }
    public void init() {
        f=new Frame("my frame");

        //对frame进行基本设置
        f.setBounds(300, 100, 600, 500);
        f.setLayout(new FlowLayout());

        but=new Button("我的按钮");

        //将组件添加到frame中
        f.add(but);

        //加载一下窗体事件
         myEvent();

         //显示窗体
         f.setVisible(true);


    }

    public void myEvent() {

        f.addWindowListener(new WindowAdapter() {
            public  void windowClosing(WindowEvent e) {
                System.out.println("我关");
                System.exit(0);
            }
        });
    }
}

按钮事件
需求:让按钮具备退出程序的功能
按钮是事件源,应该选择哪个监听器呢?
通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器,需要查看该组件对象的功能。通过查阅Button的描述,发现按钮支持一个特有监听public void addActionListener(ActionListener l)
ActionListener:是个接口,内部只含一个方法:void actionPerformed(ActionEvent e)

        but.addActionListener(new ActionListener()//只要是点击按钮就能触发该事件 
        {
            public void actionPerformed(ActionEvent e) {

                System.out.println("action OK");

            }
        });

鼠标事件是所有组件的共性事件,所以它定义在Component中:public void addMouseListener(MouseListener l)
MouseListener是个接口,因为其方法较多,所以有适配器MouseAdapter,创建匿名内部类方便

but.addMouseListener(new MouseAdapter() {
            private int count=1;
            private int clickCount=1;
            public void mouseEntered(MouseEvent e) {

                System.out.println("鼠标进入组件(按钮)"+count++);

            }
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount()==2)
                       System.out.println("点击动作"+clickCount);
            }
        });

↑ 鼠标双击事件:属于鼠标事件,只是鼠标两次点击触发的事件,在MouseEvent类中有方法:public int getClickCount()返回与事件关联的鼠标单击次数【这个次数是在两次时间间隔很短的情况下发生的才会获取为2次,时间长则为1次】

键盘事件

char getKeyChar( ):返回与此事件中的键关联的字符
int getKeyCode( );返回与此事件有关的整数keyCode
该类中提供了常量字段,方便操作键盘,比如KeyEvent.VK_ENTER就是enter的整数值,不用再通过getKeyCode获取了。

1)需求:按键盘enter实现窗体退出

but.addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent e) {


                if((e.getKeyCode()==KeyEvent.VK_ENTER))
                     System.exit(0);


            }
        });

2)需求:通过按ctrl+enter来退出窗体
这里写图片描述

在Java.awt.event.InputtEvent中有方法:public boolean isControlDown():判断ctrl是否按下。
因为KeyEvent继承了InputtEvent,所以KeyEvent可以直接用这个方法(keyevent并没有进行覆盖操作)

but.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if(e.isControlDown()&&(e.getKeyCode()==KeyEvent.VK_ENTER))
                     System.exit(0);

            }
        });
    }

3)需求:向文本框中输入0-9,其他输入都非法,不会输入到文本框中
InputEvent类中public void consume()使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件。
(比如文本框监听键盘按下,默认输入到文本框,非法字符不输入到文本框中(非默认方式consume))
private TextField tf;
f.add(tf);

tf.addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent e) {

                int code=e.getKeyCode();
                if(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)
                    e.consume();
            }

        });
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UIDesigner(腾讯公司出品) 在软件设计阶段,交互设计师或者产品经理等常常需要使用一些工具(比如Visio、Axure RP、Flash或者OmniGraffle等)制作出静态稿或者原型来表达设计思想。这些工具是各有各的优势,当然也各有各的缺点啦。那么腾讯CDC是如何设计软件原型的呢?这里向大家介绍我们正在研发的原型设计利器UIDesigner。   首先,先让我们来体验一下UIDesigner制作出来的原型效果。这个原型是一个设置窗体,主要由按钮、复选框、分组框和文本框等控件构成,其中一些按钮还具有响应的动作(如打开另一个界面,关闭窗体等)。如图一所示,这是使用Firework制作出来的交互图。 图一、使用Firework制作出来的设计稿   这种交互图的特点是简单明了,能够表示出各种控件的基本属性(如文本、位置和选中状态等),但它只是一个静态的图片,不能真实表现出每个控件的响应动作,如仅看这张图,是不清楚点击代理服务器设置分组框上的“设置…”按钮会有什么响应的。   那再看看你若使用UIDesigner制作出来的效果:最终输出的是一个EXE可执行文件(见图二左上角),双击运行后就会出现一个与最终实现效果完全一致的窗体(见图二右)。另外,它还是一个具有响应动作的真实原型,例如你若点击了“设置…”按钮,那就会弹出一个新的窗体(见图三)。 图二、使用UIDesinger制作出来的原型 图三、点击“设置…”按钮后弹出的另一窗体   实际上,这个新弹出的窗体都是一个独立的原型,也是由UIDesigner制作出来的。由于它里面的控件同样可以设置下一步的响应动作,所以从总体上来看,众多原型就像一个树状结构,而其中的父节点就是图二中的设置窗体了。这种结构具有一个很大的好处:无论你完成了多个界面的原型,只需要它们之间有链接关系,最后输出的只是一个EXE可执行文件。这样,你可以很方便地与其它人员表达自己的设计思路,让沟通变得更加快捷。   接下来,我们看看这个原型是如何制作出来的。   第一步:建立空白窗体,调整它的大小、风格、标题和Icon 图四、使用UIDesigner制作原型—建立窗体   第二步:从工具箱中拖曳控件到窗体上,修改这些控件的属性(如Text等) 图五、使用UIDesigner制作原型—加入控件   由于UIDesigner具有自动对齐的功能,所以在拖动控件到窗体时就可以完成排版工作,不需要再逐个像素去调整。另外,不单单在加入控件到窗体时,在改变已存在于窗体内的控件的位置或者大小时,自动对齐功能一样会生效。这样,设计者在调整控件大小或者位置时(包括控件与控件,控件与窗体边缘等的距离等情况),工作变得很简单。 图六、使用UIDesigner制作原型—自动对齐功能   第三步:几分钟后,所有的控件都放到窗体并设置好属性了,如下图。 图七、使用UIDesigner制作原型—整体界面效果   此时,设计者就可以使用软件的导出图片或者导出原型功能分享你的设计成果了。当然,现在这种效果还只是一个没有响应动作效果的原型。接下来,我们再给“设置…”按钮加入响应动作。首先,选中“设置…”按钮,然后点击工具栏的“响应”按钮,你将会看到如图八的响应设置窗口。此时,你可以选择打开窗体、打开网页、弹出对话框、修改属性值和关闭本身窗体等五种效果,这里我们选择“打开窗体”,然后在弹出的对话框里指向弹出窗体的文件。最后,点击“完成”按钮即可。 图八、使用UIDesigner制作原型—设置控件的响应动作   到此为止,你就完成了一个与最终实现效果完全一致的高保真原型了。产品经理和开发人员等若想了解你的设计思想就不需要看着长长几页的说明文档了,而只需要运行你输出的原型文件,就可以对你的设计思路一目了然。   UIDesigner除了能让使用者能够快速地搭建起软件界面的高保真原型外,还提供了项目管理,让使用者能够方便地管理工程文件;提供了图片库和模板库功能,让使用者可以方便地重用以前的设计资源;提供了32个Windows客户端软件常用控件,满足使用者的设计需求;提供了多个属性设置入口,分别实现最常用属性设置、一般属性设置和高级属性设置功能。当然,UIDesigner不是专用来设计QQ的,其它的Windows客户端产品都在它的工作范围之内。总的来说呢,使用UIDesigner来制作原型是很高效的,而制作出来的原型也能够实现设计师、产品经理和程序开发工程师三者间的快速沟通,减少不必要的工作内耗。 ------------------------------------------------------------------ GUI_Design_Studio_3.5.94.0 在2008年,这款软件的作者从1,322位付费用户那获得了162,302美元的收入(其中仅12月份就有39,000美元),这令人鼓舞地证明了只要是提供真正价值的服务和软件,就能够创造很好的收入,即使在经济萧条的寒冬里。 GUI Design Studio是一款图形用户界面设计工具,您能用它在不需要编写任何代码或脚本的情况下快速地创建演示原型。使用标准元素绘制个人化的屏幕、窗口以及控件;将它们整合以展示操作工作流然后运行模拟程序测试您的设计。 当您需要绘制一款应用程序的外观或显示怎样将程序的各个部分连接起来时,您就可以使用GUI Design Studio来实现,如: 将产品创意文档化 制作项目提案 需求记录 创建屏幕图样 为开发人员制作详细的规格 为现有产品提出加强方案 以及更多其它用途 为用户以及股东甚至您自己制作展示文件以: 验证设计 找出替代项 评估多个使用场景 系统需求 Microsoft Windows Vista/XP/NT/2000 至少15MB的硬盘空间 推荐不少于256MB的内存 工程 将您的工作组织放到工程里。 每个工程都拥有它自己的文件夹结构。 可连接您计算机或网络上任何地方的其它库工程。 可连接到您计算机或网络上任何地方使您能够方便地获取图片以及其它文件。 创建您想要的并独立于所有工程的个人化设计文件。 创建能重复使用的设计库以及工程之间的一致性。 将图片直接从剪贴板中粘贴到工程文件夹的文件中。 屏幕设计程序 可同时打开多个设计文档并能使用分页界面在文档间快速切换。 可使用标准Windows元素创建图形用户界面GUI)屏幕,包括框架窗口、会话、菜单、工具栏、标签、按钮、复选框、单选按钮、滚动条、滑动调节框、微调框、组合框、树列表、列表框、编辑框以及静态文本等。 通过现有元素或其它自定义控件创建自定义控制组件。 在其它设计中创建将要使用的控件设计。 以常用的文件格式添加图标与图片。 从能够显示您将获得什么的控件面板中进行拖放操作。 属性编辑程序使您能将每个元素进行自定义。 元素的自动生成功能。 您能在任何地方放置任何元素。 Edge snapping能通过“点击”对屏幕元素进行统一记录。 设计网格向您提供了简单的制作具有一致性设计布局的方法。 只需单键点击就能排列元素组。 均衡地隔开元素组。 调整元素大小以适应其它元素或测量一组其它元素。 聚焦缩小以查看细节设计或聚焦放大以浏览设计概况。使用工具栏按键或键盘或鼠标的滑动缩小放大功能聚焦增量。 使用鼠标的滚动以及滚轮功能快速浏览设计的概况。 剪切、复制与粘贴。 使用可选的canvas向导显示可用的屏幕空间。 通过文本框与书签对您的设计进行注释。 为每个设计添加说明。 选择色彩主题以避免实际功能窗口的混淆。 图标 为图标面板提供快速的访问方式。 工程间可共享常用图标。 工程也能拥有它们独享的图标集。 使用将来在实际产品开发中可能用到的标准ICO文件。 包含的Icon Express编辑程序支持16色、256色以及最大尺寸为127 x 127的真彩图标。 如果愿意同样能整合任意其它的图标编辑应用程序。 展示与原型 在可导航元素(如按键与窗口)之间创建连接以显示控制流程。 为图象添加覆盖保护以及添加其它元素以创建可导航的热点。 支持形式化与非模态的窗口并支持显示、隐藏或微调窗口,以及窗口替换以实现切换效果。 锚点使您能对窗口进行准确定位。 能立即在模拟程序中测试或展示您的设计。 添加消息框以描述可能在真实应用程序中出现的功能。 可创建多种场景,如正常条件下的场景与多个出错场景。 选择要激活的场景或让模拟程序为您选择。 更改有效的屏幕分辨率以查看您的设计如何适应不同的屏幕大小。 在没有进行脚本或代码编写的情况下,所有操作都是以图形模式完成。 ------------------------------------------------------------------ Balsamiq_Mockups_1.8.4 1. 首先安装 AdobeAIRInstaller.exe 2. 安装主程序 MockupsForDesktop.air 3. 使用 keygen 进行注册 在Balsamiq Mockups中绘制界面原型,就像在纸张和白板上手工绘画一样方便快速,而且不用担心出错,因为你完全可以进行回复/重做。在Balsamiq Mockups中设计原型比在纸张和白板可有趣多了! 丰富的控件支持 Balsamiq Mockups预先提供了丰富的控件,如浏览器窗口、媒体播放器组件、圆形图表等,让你信手拈来! 丰富的控件 方便的属性设置 当你选择一个控件时,会立刻出现该控件的属性选项,你可以随时编辑修改属性。 属性设定 无限的恢复/重做,不用担心出错,你可以无限制的进行回复和重做。 开放,可移植的数据 Balsamiq Mockups所生成的数据是易于阅读的XML格式数据,你可以进行方便的移植和重用集成。 开放的数据 多种方式的集成应用,你可以将Balsamiq Mockups集成倒Confluence, Jira, XWiki中. 集成应用 Balsamiq Mockups是一款免费的带有手绘风格的原型设计软件,可以帮助你设计桌面应用软件,Web 2.0 站点, RIA富网络应用程序, Web站点和Web应用软件。 功能和亮点: 操作方面:拖拽,控件分组,甚至元素之间的对齐都做得很到位; 预制了六十多个界面元素,从简单的输入框,下拉框,到经常用得到的导航条,日历,表格,到复杂的Tag Cloud,Cover Flow, 地图,WYSWYG的格式工具栏等,有了这些不用从头画起,其实比用白板都快; 界面元素的修改很简单,比如导航条的几个标签页的label,就是用逗号分隔的文字,下拉框的选项就是分行的文字; 使用xml语言来记录和保存界面元素和布局,从而使其能够快速的导入到你所需的任何一个项目中,或其他工具中。 可以将设计导出成PNG格式的图片; 随着使用的熟练,快捷键便派上用场,超过一半的元素均有快捷方式,这更有助于原型的快速构造,几乎几分钟便可实现一个满意的而复杂的原型设计; 跨平台,Balsamiq Mokups是用Flex和Air实现的,所以在Mac OS, Linux和Windows下都能使用; 不仅仅有桌面版本,还有能集成在Confluence,JIRA,和XWiki中的版本,使得异地在线协作更方便有效。 可以用命令行进行导出操作,这样就能让我写个脚本,从svn里checkout某个目录下的所有设计文件后,导出图片,打包后用邮件发到项目经理,工程师甚至客户那; 跨平台,Balsamiq Mokups是用Flex和Air实现的,所以在Mac OS, Linux和Windows下都能使用;不仅仅有桌面版本,还有能集成在Confluence,JIRA,和XWiki中的版本,使得异地在线协作更方便有效;据作者说,现在这款软件的设计就是用它自己来设计的,经典的“吃自己的狗粮”,这也让我对其更有信心,因为它是开发者为开发者写的软件。 还有值得一提的是Balsamiq Mokups的在GetSatisfaction上的用户支持和服务,作者Peldi对问题报告,新需求的回应很积极和及时。而且根据这个讨论上看,到月底就会有一个专门用来分享界面控件设计的社区网站了,很期待。 再要说的一点是这款软件是要付费的,79美元(也可以免费,具体如何免费,请看网站上的说明),相对于它能节省下来的时间和提高的效率,是很值得的。Peldi说在2008年,这款软件就从1,322位付费用户那获得了162,302美元的收入(其中仅12月份就有39,000美元),这令人鼓舞地证明了只要是提供真正价值的服务和软件,就能够创造很好的收入,即使在经济萧条的寒冬里。
模拟精灵是一款小巧的迷你开发工具。不会编程您也可轻松制作软件、释放双手让鼠标键盘自动工作。模拟精灵2005 将会带给您前所未有、激动人心的全新体验. 这也是一款全免费的纯绿色软件,可以永久无限制的使用。无需安装注册就可随地运行,已内置了web窗体界面编程、windows编程、模拟编程、XML序列化、网络服务、zip压缩、图象处理...... 等等所有最新最强劲的功能,同时支持各种插件、.Net、ActiveX、vbs、js、DLL动态链接库、COM组件、WinAPI 小小体积但几乎可以帮助你完成所有的常用电脑操作. 模拟精灵推出了一种全新的模拟编程技术,即由编写软件到编写控制软件的软件。从使用软件到使用代码,让编程不再是程序员的专利、普通用户同样触手可及。一句代码下载网页,一句代码自动发贴,一句代码批量处理文件,一句代码完成工作。小到桌面自动化,大到价值数千的大型群发软件。大量的成功案例无不体现出模拟精灵卓越的创造能力。 第一天玩玩模拟精灵 ----- 莫名其妙,好难啊!第二天了解模拟精灵 ----- 惊喜激动,好玄啊!第三天精通模拟精灵 ----- 如获至宝,好爽啊! 一、软件功能: 1、轻松录制鼠标键盘动作、可自由编辑、自动帮助你完成一系列指定的工作。。 2、强大的web编程功能,轻松制作自动发贴软件,并首个公开强大有效的验证码识别技术。 3、可自动拔号、自动更换代理、自动聊天、轻松制作各种群发软件。 4、轻松创建功能强大游戏脚本、较同类软件节省80%时间。 5、自动安装与使用程序、远程协助、制作演示教程。 6、把一组自动化操作绑定一个热键、扩展键盘功能。 7、可创建计划任务定,可设定定时自动运行,自动录制、自动创建分卷文件。 8、可监测纪录输入的中英文字符串、按钮标题、窗体标题.监测控制运行的进程。 9、通过web窗体实现GUI界面、神奇新颍的编程开发工具。 二、软件特色: 1、可选四种完全不同的鼠标键盘录制模式、五种录制方案、录制鼠标键盘操作 2、可选四种不同的鼠标键盘回放模式,可选普通模拟、软件模拟、仿真模拟、硬件模拟。一键切换。 3、完全自动生成强大抓点、抓色块、抓图功能,无需编写代码,一键完成强大的智能判断功能。 4、通过编写网页即可设计漂亮的软件界面,不会编程也能做软件。 5、支持所有高级语言特性,如变量、延时、循环、结合标记语言与动态语言的优点 6、支持可定制多国语言包、自动互译、您也可以定制一套您自已的ApeML语言. 7、ApeML能携带图片附件,也可导入导出图片,可选三种抓屏方式,可调用外部抓屏软件... 8、自动发送中英文字符串到软件、游戏、网页...支持win9x、XP、2000、2003.. 9、支持XML序列化、网络服务、zip压缩、图象处理、窗体控制、内存读写...... 10、代码编辑支持自动完成列表与模板的代码编辑器 并提供大量视频教程、文字教程、免费技术支持论坛有问必答、及时解决您使用中遇到的疑难问题。
按钮事件监听是指在用户点击按钮时,程序能够捕捉到该事件,并执行相应的操作。在开发界面交互性较强的应用程序时,通常需要使用按钮事件监听来实现用户与程序之间的交互。具体实现方式有多种,例如在按钮上添加点击事件监听器,或者使用响应式编程框架中的观察者模式等。 在Java Swing中,可以使用ActionListener接口来实现按钮事件监听。下面是一个简单的示例代码: ``` import javax.swing.*; import java.awt.event.*; public class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Button clicked!"); } } public class Main { public static void main(String[] args) { JFrame frame = new JFrame("Button Listener Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button = new JButton("Click me!"); button.addActionListener(new ButtonListener()); frame.getContentPane().add(button); frame.pack(); frame.setVisible(true); } } ``` 在上面的代码中,我们创建了一个JButton和一个实现了ActionListener接口的ButtonListener类。当用户点击按钮时,程序会调用ButtonListener类的actionPerformed方法,并在对话框中显示一个消息。最后,我们将按钮添加到窗口中,并显示窗口。 除了Java Swing之外,其他GUI框架也都提供了类似的事件监听机制,开发人员可以根据具体需要选择相应的实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值