`
- 浏览:
48878 次
- 性别:
- 来自:
济南
-
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ButtonTest {
public static void main(String[] args){
ButtonFrame frame = new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ButtonFrame extends JFrame{
public ButtonFrame(){
setTitle("ButtonTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
ButtonPanel panel = new ButtonPanel();
add(panel);
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}
class ButtonPanel extends JPanel{
public ButtonPanel(){
JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton("Blue");
JButton redButton = new JButton("Red");
add(yellowButton);
add(blueButton);
add(redButton);
ColorAction yellowAction = new ColorAction(Color.yellow);
ColorAction blueAction = new ColorAction(Color.blue);
ColorAction redAction = new ColorAction(Color.red);
yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
redButton.addActionListener(redAction);
}
private class ColorAction implements ActionListener{
public ColorAction(Color c){
backgroundColor = c;
}
public void actionPerformed(ActionEvent event){
setBackground(backgroundColor);
}
private Color backgroundColor;
}
}
为了实现ActionListener接口,监听类必须有一个称为actionPerformed的方法,actionPerformed方法是
ActionListener中的唯一方法,该方法接收一个ActionEvent对象,此对象包含了事件发生时的相关信息
----------------------------------------------------------
***********************javax.swing.JButton
JButton(String label)
参数:label 显示按钮上的文本
***********************java.awt.Container
Component add(Component c)
将组件c添加到容器中
******************java.swing.ImageIcon
imageIcon(String filename)
---------------------------------------------------------
================建立内部类
创造一个图标,存储在一个文件中,通过媒体跟踪器自动加载这个图像
从上边可以看到:每一个按钮的处理过程都是一样的
1.用标签字符串构造按钮
2.将按钮添加到面板
3.用适当的颜色构造一个动作监听器
4.添加动作监听器
为了简化 ,可以使用一个辅助方法:
void makeButton(String name ,Color backgroundColor){
JButton button = new JButton(name);
add(button);
ColorAction action = new JButton (backgroundColor);
button.addActionListener(action);
}
然后将ButtonPanel 的构造器简化为:
public ButtonPanel(){
makeButton(“yellow”,ColorYELLOW);
...
}
紧接着可以进一步简化,注意:ColorAction类只在makeButton方法中用到一次,因此可以设置成一个匿名类
void makeButton(String name ,Color backgroundColor){
JButton button = new JButton(name);
add(button);
button.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
setBackground(backgroundColor);
}
});
}
------------------------------------------------------
============将组件变成事件监听器
任何实现了ActionListener接口的类对象都可以作为按钮监听器
Class ButtonPanel extends JPanel implements ActionListener{
..
public void actionPerformed(ActionEvent event)
{
}
..
}
然后将面板设为三个按钮的监听对象:
yellowButton。addActionListener(this);
..
..
..
现在这三个按钮不再是独立的监听器,他们共享一个监听器,即按钮面板
actionPerformed方法必须判断点击了哪个 按钮
Object source = event.getSource();
actionPerformed方法可以判断哪个按钮是事件源
if(source==yellowButton)
else
..
****************************java.util.EventObject
Object getSource();
返回事件的对象引用
****************java.awt.event.ActionEvent
String getActionCommand()
返回与这个动作事件相关的命令字符串
********************javax.swing.UIManager.LookAndFeelInfo
String getName()
返回观感的显示名称
String getClassName()
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
【对线面试官】Java从编译到执行,发生了什么? 【对线面试官】双亲委派机制 【对线面试官】JVM内存结构 【对线面试官】垃圾回收机制 【对线面试官】CMS垃圾回收器 【对线面试官】G1垃圾收集器 【对线面试官】JVM...
如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是...
该系统适用于Java语言开发者、门禁管理系统开发人员、Java初学者等。通过该系统的学习和实践,可以深入了解Java语言在物联网、智能安防等领域的应用和实现方法。 场景目标: 该系统旨在为需要进行门禁管理的场所...
该项目采用jspm作为模块加载器,结合前端技术和后端Java技术,构建了一个功能丰富、交互友好的大众书评网。用户可以在网站上浏览各类书籍的详细信息,查看其他用户的书评,也可以自己发表书评,与其他书友交流心得。...
呵呵 用于java初学者就是一些简单的额java程序
这份资源旨在为您提供关于 Java 集合框架的详细讲解,涵盖了集合的类型、特性、应用场景以及使用方法。通过深入学习,您将建立坚实的集合框架知识,能够更好地选择和应用适合的集合来满足不同的编程需求。 集合框架...
这些问题对于认真学习java的人都要必知的,当然如果你只是初学者就没必要那么严格了,那如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。 一、到底要怎么样初始化! 本问题讨论...
一些适合Java初学者的简单程序 计算机科学中的著名算法 com.test.maxflow中的最大流量问题 com.test.maxcover中的最大覆盖问题 数论 3.1。 使用欧几里得方法的最大公约数 动态编程 数据结构: 哈希图 图形 列表 ...
为什么说代码很难看,初学者可能没有这种感觉,我们分析如下,初始化工作如果是很长一段代码,说明要做的工作很多,将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于Java面向...
"CRUD代码生成器(Java)" 是一个强大的工具,旨在帮助开发者根据数据库中的数据表自动生成基础CRUD代码。这包括实体类(Entity)、数据访问对象(DAO)、数据传输对象(DTO)、值对象(VO)、查询对象(QO)、转换器...
3.2.1 Java编辑器概述..... 71 3.2.2 键入辅助..... 76 3.2.3 代码辅助..... 77 3.2.4 代码生成..... 80 3.2.5 导航Java错误和警告..... 81 3.2.6 使用快速修正功能来修改Java错误..... 82 3.2.7 重构..... 83 ...
4.2.4 使用Java编辑器进行调试..... 116 4.2.5 对当前所调试的程序进行操作..... 117 4.2.6 Console视图中的程序输出..... 119 4.2.7 有关断点的更多知识..... 119 4.2.8 Java异常断点..... 121 4.2.9...
4.2.4 使用Java编辑器进行调试..... 116 4.2.5 对当前所调试的程序进行操作..... 117 4.2.6 Console视图中的程序输出..... 119 4.2.7 有关断点的更多知识..... 119 4.2.8 Java异常断点..... 121 4.2.9...
随意查看代码,其中有许多注释对于初学者和半中级的Go开发人员可能是有用的。 关于围棋 谁设计了Go语言? Rob Pike(Unix,UTF-8) 肯·汤普森(Unix作者,UTF-8,B lang) Robert Griesemer(V8,Java热点...
虽然本书的涉猎范围很广,但也只能代表一小部分在这个软件开发这个最令人兴奋领域所发生的事情。 本书收录的是软件设计领域中的一组大师级作品。每一章都是由一位或几位著名程序员针对某个问题给出的完美的解决方案...
后来,考虑到这个脚本语言的推 广,网景采取了一种宣传策略,将LiveScript更名为JavaScript,目的是为了跟当时非常流行的面向对象语言Java发生暧昧的关系。这种 策略显然颇具成效,以至于到现在很多初学者还会为...
设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of ...