首页 > 编程语言 >《Java编程思想第四版》学习笔记45--关于图标

《Java编程思想第四版》学习笔记45--关于图标

时间:2023-12-07 16:33:02浏览次数:46  
标签:ImageIcon Java -- 45 gif faces new JButton jb

//: Faces.java
// Icon behavior in JButtons
package c13.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Faces extends JPanel {
    static Icon[] faces = {
            new ImageIcon("face0.gif"),
            new ImageIcon("face1.gif"),
            new ImageIcon("face2.gif"),
            new ImageIcon("face3.gif"),
            new ImageIcon("face4.gif"),
    };
    JButton
            jb = new JButton("JButton", faces[3]),
            jb2 = new JButton("Disable");
    boolean mad = false;
    public Faces() {
        jb.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                if(mad) {
                    jb.setIcon(faces[3]);
                    mad = false;
                } else {
                    jb.setIcon(faces[0]);
                    mad = true;
                }
                jb.setVerticalAlignment(JButton.TOP);
                jb.setHorizontalAlignment(JButton.LEFT);
            }
        });
        jb.setRolloverEnabled(true);
        jb.setRolloverIcon(faces[1]);
        jb.setPressedIcon(faces[2]);
        jb.setDisabledIcon(faces[4]);
        jb.setToolTipText("Yow!");
        add(jb);
        jb2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                if(jb.isEnabled()) {
                    jb.setEnabled(false);
                    jb2.setText("Enable");
                } else {
                    jb.setEnabled(true);
                    jb2.setText("Disable");
                }
            }
        });
        add(jb2);
    }
    public static void main(String args[]) {
        Show.inFrame(new Faces(), 300, 200);
    }
} ///:~

                                                                                                                                                                 P.473

以上例程中代码:

static Icon[] faces = {
            new ImageIcon("face0.gif"),
            new ImageIcon("face1.gif"),
            new ImageIcon("face2.gif"),
            new ImageIcon("face3.gif"),
            new ImageIcon("face4.gif"),
    };

改成以下形式才能加载图片:

static Icon[] faces;

    static {
        try {
            faces = new Icon[]{
                    new ImageIcon(ImageIO.read(new File("src/face0.gif"))),
                    new ImageIcon(ImageIO.read(new File("src/face1.gif"))),
                    new ImageIcon(ImageIO.read(new File("src/face2.gif"))),
                    new ImageIcon(ImageIO.read(new File("src/face3.gif"))),
                    new ImageIcon(ImageIO.read(new File("src/face4.gif"))),
            };
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

不知道还有没有其他方法。

标签:ImageIcon,Java,--,45,gif,faces,new,JButton,jb
From: https://blog.51cto.com/u_16183536/8724431

相关文章

  • 可视化监控/安防视频云平台公共区域人员行为安全监控方案
    大家在浏览新闻时,经常会看到某某地区有人员摔倒,长时间无人发现或人员闯入某危险区域管理人员未及时劝离,导致发生了意外事故的新闻。由于人力资源和人为巡检能力有限,在很多公共区域无法及时检测人员行为从而导致危险发生。为确保公共区域人员行为的安全,旭帆科技基于AI视频视频技术的......
  • 如何在CentOS7 安装 XRDP 远程桌面服务器
    1)图形界面安装CentOS7没有图形化操作可能对很多人来说都不太习惯,下面我们来为CentOS7安装图形化界面,本文以安装GNOME图形化为例**写在安装前:**如果你的CentOS7是最小化安装,默认都是不带XWINDOWS的配置公网Yum源mkdir/etc/yum.repos.d/backupmv/etc/yum.repo......
  • 微信号上传附件小程序
    微附件是一个旨在简化公众号附件管理的实用工具。它为运营人员提供了一个轻松上传和管理多种文件格式(包括Word、Excel、PPT、PDF、TXT等)的平台,并使得用户能够直接下载这些文件。鉴于微信公众号本身并不内置此类功能,微附件的应用因此变得极为重要。首先,要访问微附件的官方网页,您可以......
  • 互联网医院系统|北京互联网医院软件开发功能
    打造移动互联网医院,就是,通过移动互联网将医院与患者、医院内部(医生、护士、领导层)、医院与生态链上的各类组织机构连接起来。以患者为中心,优化医院业务流程,提升医疗服务质量与医院资源能效,让患者通过移动互联网随时随地的享受医院的服务,改善患者就医体验。下面小编就给大家分享下互......
  • 无涯教程-Erlang - is_pid函数
    此方法用于确定进程ID是否存在。is_pid-语法Is_pid(processid)processid  - 这是需要检查的进程ID,是否存在。is_pid-返回值如果进程ID存在,则返回true,否则将返回false。-module(helloLearnfk).-export([start/0,call/2]).call(Arg1,Arg2)->io:format("......
  • vue3组件通信Props()
    vue3组件通信父传子defineProps()在使用 <scriptsetup> 的单文件组件中,props可以使用 defineProps() 宏来声明://父<HelloWorldmsg="Youdidit!"/><!--根据一个变量的值动态传入-->//<BlogPost:title="post.title"/>//子<scriptsetup>//写法1......
  • 编译器上手指南,算子开发及开源项目指导手册,直播课程报名通道限时开启!
    「MegEngine开发者说」直播课程第二期火爆来袭!本期既有技术大佬带来深度学习编译器MegCC的详细教程,又有实习经历丰富的在校同学分享MegEngine算子开发流程及开源经历,手把手带你学习,精彩不容错过!更有直播间有奖答疑,现在报名,即有机会获得MegEngine周边大礼包!关于「MegEngi......
  • 12.7闲话
    今天一看那个高中楼都被围起来了,估计快学考了为啥和同学打招呼都没人理我,哦原来因为我是菜√,太菜了导致的推歌虚拟歌手贺岁纪《万物有灵》歌词似一捧细泉的奔逃跃过石缝岩角降落到我怀抱待天地再静默一秒这蓬勃的心跳就将划开晨晓我是亿万株花草破土时的微渺渴盼你......
  • H7-TOOL发布2.24固件,增加CMSIS-SVD解析,RTOS Trace链表,I2C/SPI从机,CANopen解析等,脱机烧
    H7-TOOL详细介绍(含操作手册):http://www.armbbs.cn/forum.php?mod=viewthread&tid=89934视频介绍:https://www.bilibili.com/video/BV1494y1j7mj【PC软件】V2.2.41.脱机烧录功能升级  -新增GD32C10x系列  -新增钜泉光电HT502x  -新增英飞凌TLE987x系列  -新......
  • redis分布式锁实现原理
    在.netcore中,可以使用StackExchange.Redis实现redis分布式锁,///<summary>///分布式锁///</summary>///<paramname="Redis">RedisDB</param>///<paramname="Key">锁标识</param>///<paramname="Seconds">过......