Java开发GUI之Button控件 原

Java开发GUI之Button控件

    Java中的awt包提供了丰富的用户界面组件。重要的是,Java的跨平台性使用awt包可以在Windows,MacOS等平台创建桌面软件。本篇博客总结Button控件的简单使用。

package App;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ButtonTest {
	public static void main(String[] args ) {
        //创建面板
		Frame frame = new Frame("BUTTON");
        //创建按钮
		Button button1 = new Button();
        //设置按钮标题
		button1.setLabel("按钮");
        //设置按钮标记 用在触发方法中分区按钮
		button1.setActionCommand("tag1");
        //获取按钮标题
		System.out.println(button1.getLabel());
        //添加按钮
		frame.add(button1);
        //添加交互监听
		button1.addActionListener(new MyActionListener());
		frame.pack();
		frame.show();	
	}
}
class MyActionListener implements ActionListener{
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
        //这里可以取到按钮设置的actionCommand值
		System.out.println(e.getActionCommand());
	}
}

与addActionCommand方法对应,Button类中还有一些移除监听与获取监听者的方法,如下:

//移除一个监听者
public synchronized void removeActionListener(ActionListener l);
//获取监听者列表
public synchronized ActionListener[] getActionListeners();
//获取监听者列表 泛型数组
public <T extends EventListener> T[] getListeners(Class<T> listenerType);

ActionEvent类中定义了交互行为的一些特征,示例如下:

class MyActionListener implements ActionListener{
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		//获取触发时间
		System.out.println(e.getWhen());
		//获取触发模式
		System.out.println(e.getModifiers());
		//获取触发事件的控件 此处为Button按钮
		System.out.println(e.getSource());
		//获取关联的actionCommand值
		System.out.println(e.getActionCommand());
	}
}

getModifiers方法获取事件的模式,返回值定义如下:

//按住shift键点击按钮
public static final int SHIFT_MASK          = Event.SHIFT_MASK;
//按住ctrl键点击按钮
public static final int CTRL_MASK           = Event.CTRL_MASK;
//按住meta键点击按钮
public static final int META_MASK           = Event.META_MASK;
//按住alt键点击按钮
public static final int ALT_MASK            = Event.ALT_MASK;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏九彩拼盘的叨叨叨

学习前端 第6周 第1天

691
来自专栏卡少编程之旅

Vue进阶部分文档研读和学习

3097
来自专栏何俊林

OpenGL中 Canvas 性能分析

本文将通过分析部分源码,描述 Android 里面的 Canvas 的大致实现。并且会对 Canvas 的性能做一定分析,提供对 Canvas 的使用建议。

2603
来自专栏xx_Cc的学习总结专栏

iOS-UITextField 全面解析iOS中UITextField 使用全面解析UITextField的代理方法通知UITextField 在storyboard 中设置属性

5026
来自专栏逸鹏说道

Markdown基础(内含:锚点使用,使用HTML,新页面跳转,目录生成)

如果要语法高亮就在```后面加小写语言名,eg:html,css,javascript,python,cs(csharp)等等

46711
来自专栏游戏杂谈

DOM的事件模拟

只有根据DOM2级事件实现这些事件的浏览器才返回true,以非标准方式支持这些事件的浏览器会返回false;

1261
来自专栏Vamei实验室

Java进阶09 事件响应

在GUI中,我们看到了如何用图形树来组织一个图形界面。然而,这样的图形界面是静态的。我们无法互动的对该界面进行操作。GUI的图形元素需要增加事件响应(event...

2128
来自专栏阮一峰的网络日志

如何做到 jQuery-free?

jQuery是现在最流行的JavaScript工具库。 据统计,目前全世界57.3%的网站使用它。也就是说,10个网站里面,有6个使用jQuery。如果只考察使...

3164
来自专栏Nian糕的私人厨房

CSS 消除 inline-block 元素间的间隙

从上图的运行结果可以看到,添加 display: inline-block; 属性后,水平呈现的元素间产生了空隙,出现这一现象的本质是,HTML 中存在的空白符...

1034
来自专栏杨逸轩 ' sBlog

元旦快乐 – 使用snow.js增加下雪效果

3414

扫码关注云+社区

领取腾讯云代金券