• 变脸(GUI)


    我感觉通过代码来学一门语言的语法比较快。

     运行结果:

    代码:

      1 /*awt是抽象窗口工具集(Abstract Window Toolkit)*/
    2 import java.awt.*;
    3 /*Swing程序包来自名为javax的类库(Java eXtension)*/
    4 import javax.swing.*;
    5 /*event程序包包含事件处理所需的所有类*/
    6 import java.awt.event.*;
    7
    8 public class Change
    9 {
    10 public static void main(String[] args)
    11 {
    12 new ChangingFace();//创建SmileyFace对象
    13 }
    14 }
    15
    16 /*JFrame是Swing程序包的一个组件,它的作用是形成一个用以显示图形的可视窗口。
    17 * */
    18
    19 /*关键字implements连接一个接口类(如ActionListener)时,到达了与继承
    20 * 相似的结果。ActionListener类是一个特殊的类,称为接口类:接口类只包含
    21 * 一些抽象方法,这意味着所有子类都必须为这些抽象方法编写方法体。本例中,
    22 * ActionListener类要求实现一个名为actionPerformed的方法,该方法用
    23 * 于处理程序接收的事件
    24 * */
    25 class ChangingFace extends JFrame implements ActionListener
    26 {
    27 private boolean isHappy = true;
    28 /**JButton是Swing程序包中的类,JButton类具有一个构造函数,允许
    29 * 程序员根据指定的caption(这里是Smile,Frown)创建按钮
    30 */
    31
    32 private JButton happyButton = new JButton("Smile");
    33 private JButton sadButton = new JButton("Frown");
    34
    35 public ChangingFace()//构造函数
    36 {
    37 setTitle("Changing Face");//标题
    38 /*一个容器(就像扩展JFrame类的ChangingFace类)总是需要一个与之
    39 * 相关联的布局规则——该规则决定了组件添加进该容器的方式。JFrame类的
    40 * 默认规则是BorderLayout规则。程序中需要的规则是FlowLayout
    41 * 规则,该规则的含义是所有的组件都以它们被加入的顺序放置。如果当前行
    42 * 被占满,就从下一行开始放置。
    43 * */
    44 setLayout(new FlowLayout());
    45
    46 /*添加按钮*/
    47 add(happyButton);
    48 add(sadButton);
    49 /*这里没有调用Frame本身的setBackground方法,而是调用了框架的
    50 * Content Pane(内容窗格)的方法。
    51 * */
    52 getContentPane().setBackground(Color.yellow);
    53 /*接下来考虑:当按钮被按下时,可以显示期望的结果。这部分内容
    54 * 成为事件处理。
    55 * */
    56 /*通过将一个ActionListener的对象添加到另一个对象(如一个按钮),
    57 * 可以使该对象listen鼠标单击的动作。这样程序可以根据鼠标单击事件
    58 * 采取某个行动。
    59 * 采取的行动取决于编写的一个特殊的例程,该例程被称为事件处理器。
    60 * */
    61 happyButton.addActionListener(this);
    62 sadButton.addActionListener(this);
    63
    64 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    65 setSize(250,200);//像素
    66 setLocation(300,300);//框架左上角相对于屏幕左上角的位置
    67
    68 setVisible(true);//使Frame可见
    69 }
    70
    71 public void paint(Graphics g)
    72 {
    73 super.paint(g);//调用超类JFrame的构造函数
    74 g.setColor(Color.red);//设置下面图形的颜色为红色
    75 g.drawOval(85,75,75,75);
    76 g.setColor(Color.blue);//设置下面图形的颜色为蓝色
    77 g.drawOval(100,95,10,10);//左眼
    78 g.drawOval(135,95,10,10);//右眼
    79
    80 g.drawString("Changing Face",80,185);//显示字符串
    81 if( isHappy == true )
    82 g.drawArc(102,115,40,25,0,-180);
    83 else
    84 g.drawArc(102,115,40,25,0,180);
    85 }
    86 /*通过为ActionListener接口要求的actionPerformed方法编写代码,可
    87 * 以控制鼠标按键被单击时程序的行为。当鼠标被单击时,该方法自动发送一个
    88 * ActionEvent对象。ActionEvent类包含一个名为getSource的方法,
    89 * 该方法可以返回被单击对象的名称
    90 * */
    91 public void actionPerformed(ActionEvent e)
    92 {
    93 if(e.getSource() == happyButton)
    94 {
    95 isHappy = true;
    96 repaint();
    97 }
    98 if(e.getSource() == sadButton)
    99 {
    100 isHappy = false;
    101 repaint();
    102 }
    103 }
    104 }
  • 相关阅读:
    写时复制集合 —— CopyOnWriteArrayList 源码原理阅读笔记
    初步整合vue-element-admin和GitDataV两个Vue开源框架方案实现大数据可视化
    IOS苹果登录sign in with apple后端校验
    IOS审核被拒:IOS苹果授权登录(Sign in with Apple)/Apple登录/苹果登录集成教程
    ios安装自定义基座失败问题
    IOS APP上架App Store及提交审核详细教程
    IOS APP报错:SyntaxError: Invalid regular expression: invalid group specifier name __ERROR
    Apple Pay苹果支付IOS in-App Purchase内购项目服务端校验
    浅析浏览器是如何工作的(一):V8引擎、JIT机制、JS代码解释执行与编译执行
    ApplePay苹果支付内购项目配置及代码实现及沙箱测试
  • 原文地址:https://www.cnblogs.com/HpuAcmer/p/2378641.html
Copyright © 2020-2023  润新知