变脸(GUI)
2012-03-03 20:29
197 查看
我感觉通过代码来学一门语言的语法比较快。
运行结果:
代码:
运行结果:
代码:
/*awt是抽象窗口工具集(Abstract Window Toolkit)*/ import java.awt.*; /*Swing程序包来自名为javax的类库(Java eXtension)*/ import javax.swing.*; /*event程序包包含事件处理所需的所有类*/ import java.awt.event.*; public class Change { public static void main(String[] args) { new ChangingFace();//创建SmileyFace对象 } } /*JFrame是Swing程序包的一个组件,它的作用是形成一个用以显示图形的可视窗口。 * */ /*关键字implements连接一个接口类(如ActionListener)时,到达了与继承 * 相似的结果。ActionListener类是一个特殊的类,称为接口类:接口类只包含 * 一些抽象方法,这意味着所有子类都必须为这些抽象方法编写方法体。本例中, * ActionListener类要求实现一个名为actionPerformed的方法,该方法用 * 于处理程序接收的事件 * */ class ChangingFace extends JFrame implements ActionListener { private boolean isHappy = true; /**JButton是Swing程序包中的类,JButton类具有一个构造函数,允许 * 程序员根据指定的caption(这里是Smile,Frown)创建按钮 */ private JButton happyButton = new JButton("Smile"); private JButton sadButton = new JButton("Frown"); public ChangingFace()//构造函数 { setTitle("Changing Face");//标题 /*一个容器(就像扩展JFrame类的ChangingFace类)总是需要一个与之 * 相关联的布局规则——该规则决定了组件添加进该容器的方式。JFrame类的 * 默认规则是BorderLayout规则。程序中需要的规则是FlowLayout * 规则,该规则的含义是所有的组件都以它们被加入的顺序放置。如果当前行 * 被占满,就从下一行开始放置。 * */ setLayout(new FlowLayout()); /*添加按钮*/ add(happyButton); add(sadButton); /*这里没有调用Frame本身的setBackground方法,而是调用了框架的 * Content Pane(内容窗格)的方法。 * */ getContentPane().setBackground(Color.yellow); /*接下来考虑:当按钮被按下时,可以显示期望的结果。这部分内容 * 成为事件处理。 * */ /*通过将一个ActionListener的对象添加到另一个对象(如一个按钮), * 可以使该对象listen鼠标单击的动作。这样程序可以根据鼠标单击事件 * 采取某个行动。 * 采取的行动取决于编写的一个特殊的例程,该例程被称为事件处理器。 * */ happyButton.addActionListener(this); sadButton.addActionListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(250,200);//像素 setLocation(300,300);//框架左上角相对于屏幕左上角的位置 setVisible(true);//使Frame可见 } public void paint(Graphics g) { super.paint(g);//调用超类JFrame的构造函数 g.setColor(Color.red);//设置下面图形的颜色为红色 g.drawOval(85,75,75,75); g.setColor(Color.blue);//设置下面图形的颜色为蓝色 g.drawOval(100,95,10,10);//左眼 g.drawOval(135,95,10,10);//右眼 g.drawString("Changing Face",80,185);//显示字符串 if( isHappy == true ) g.drawArc(102,115,40,25,0,-180); else g.drawArc(102,115,40,25,0,180); } /*通过为ActionListener接口要求的actionPerformed方法编写代码,可 * 以控制鼠标按键被单击时程序的行为。当鼠标被单击时,该方法自动发送一个 * ActionEvent对象。ActionEvent类包含一个名为getSource的方法, * 该方法可以返回被单击对象的名称 * */ public void actionPerformed(ActionEvent e) { if(e.getSource() == happyButton) { isHappy = true; repaint(); } if(e.getSource() == sadButton) { isHappy = false; repaint(); } } }
相关文章推荐
- MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 4,小游戏
- JAVA GUI 登录注册(连接数据库 oracle)
- 穿透Session 0 隔离(一)(how to use Windows service run a GUI application.)
- C/C++_log2000_空白窗口3及初步gui编程笔记
- 黑马程序员-->15_自编日记本程序(IO、GUI和监听器)
- matlab GUI与simulink混合调用以及参数传递
- Unity3D笔记 GUI 二 、实现选项卡一窗口
- ssr最新分享170601 gui-config.json
- ogre+mygui配置
- python的GUI编程(Tkinter库)(二)
- 虚拟机下Ubuntu没有GUI图形界面,解决方法
- Memory Device: GUI_MEMDEV_Select()的应用之一
- Eclipse进行JavaGUI开发的环境配置
- python_GUI应用程序代码
- GUI
- ShowGUI.cs
- 第三周作业(GUI简单签到程序和判断是否闰年)
- Git 的一个教程网站(中文、GUI)
- 黑马程序员--Java基础总结--GUI
- HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP错误解决方法