首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将图标设置为JButton而不丢失按下时的动画?

要将图标设置为JButton而不丢失按下时的动画,可以使用自定义的ButtonUI来实现。ButtonUI是一个抽象类,用于定义按钮的外观和行为。

首先,创建一个自定义的ButtonUI类,继承自BasicButtonUI。在该类中,重写paintIcon()方法和paintButtonPressed()方法来实现按钮图标的绘制和按下时的动画效果。

代码语言:txt
复制
import javax.swing.*;
import javax.swing.plaf.basic.BasicButtonUI;
import java.awt.*;

public class CustomButtonUI extends BasicButtonUI {
    @Override
    protected void paintIcon(Graphics g, JComponent c, Rectangle iconRect) {
        AbstractButton button = (AbstractButton) c;
        ButtonModel model = button.getModel();
        Icon icon = button.getIcon();

        if (icon != null) {
            if (model.isPressed() && model.isArmed()) {
                // 绘制按下时的图标
                icon.paintIcon(c, g, iconRect.x + 1, iconRect.y + 1);
            } else {
                // 绘制正常状态下的图标
                icon.paintIcon(c, g, iconRect.x, iconRect.y);
            }
        }
    }

    @Override
    protected void paintButtonPressed(Graphics g, AbstractButton b) {
        // 绘制按下时的背景色
        g.setColor(b.getBackground().darker());
        g.fillRect(0, 0, b.getWidth(), b.getHeight());
    }
}

然后,在创建JButton时,使用setUI()方法将自定义的ButtonUI设置给按钮。

代码语言:txt
复制
JButton button = new JButton("Button");
button.setIcon(new ImageIcon("icon.png"));
button.setUI(new CustomButtonUI());

这样,按钮就会显示指定的图标,并且在按下时会有相应的动画效果。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法给出具体的推荐链接。但腾讯云提供了丰富的云计算服务,可以根据具体需求选择适合的产品,如云服务器、云数据库、云存储等。可以通过腾讯云官方网站进行了解和查找相关产品信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java swing一篇轻松学习(高考后可以自学)

关 闭窗口的 小部件、标题等) setIconImage(Image image) 设置要作为此窗口图标显不的图像 setJMenuBar( JMenuBar menubar) 设置此窗体的菜单栏 setLayout...button4=new JButton("右·很少用到"); JButton button5=new JButton("下·备案号啥的"); //上n下s左w右e中center add(button1...ActionListener 监听 void setIcon(Icon icon) 设置按钮的默认图标 void setText(String text) 设置按鈕的文本 void setMargin...setPressedIcon(Icon icon) 设置按下按钮时的图标 void setSelectedIcon(Icon icon) 设置选择按鈕时的图标 void setRolloveiicon(...Icon icon) 设置鼠标移动到按扭区域时的图标 void setDisabledIcon(Icon icon) 设置按钮无效状态下的图标 void setVerticalAlignment(int

9.6K10

Java事件处理基础实例:处理按钮点击+捕获窗口事件+改变观感

这个事件对象包含了事件发生时的相关信息。 当按钮被点击时,我们希望将面板的背景颜色设置为指定的颜色。该颜色存储在监听器类中。 然后,为每种颜色构造一个对象,并将这些对象设置为按钮监听器。...这个对象的backgroundColor实例域设置为Color.YELLOW,现在就将面板的背景色设置为黄色了。 这里还有一个需要考虑的问题。ColorAction对象没有权限访问panel变量。...下面说明一下如何将ColorAction类放置在ButtonPanel类中。 下面仔细地研究一下actionPerformed方法。...在这个文件中,将属性swing.defaultlaf设置为所希望的观感类名。...例如,当用户关闭框架时,可能希望弹出一个对话框来警告用户没有保存的工作有可能会丢失,只有在用户确认之后才退出程序。

3.7K30
  • Java入门(12)-- Swing程序设计

    } } 运行结果: 12.3 标签组件与图标 12.3.1 标签的使用 标签由JLabel类定义,它的父类为JComponent类。...创建图标 在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。...:从图片源创建图标的同时为图标添加简短的描述,这个描述不会在图标上显示,可以使用getDescription()方法获取; public ImageIcon(URL url):利用位于计算机网络上的图像文件创建图标...默认情况下,组件在每一行都是居中排列的,可以通过设置更改组件的排列位置。...注:在设置网格组的每一行和每一列对额外空间的分布方式时,建议只设置第一行的weightx属性和第一列的weighty属性,建议为各个属性按百分比取值。

    5.4K10

    JAVA学习Swing章节按钮组件JButton的简单学习

    )由JButton对象表示 * JButton含有4种主要的构造方法 * 参数text,icon分别代表显示文字标签和图标 * * 3:本实例使用了两种方式创建按钮,第一种是在初始化按钮时赋予按钮图标与文字...* 这种初始化必须先获得图片路径,然后将路径实例化到Icon,然后在Button中加载出来 * 第二种方式是首先创建一个没有定义图标和文字的按钮对象,然后使用 * setIcon()方法为这个按钮定制一个图标...* setToolTipText()方法是为按钮设置提示文字,鼠标停留在按钮上面即可 * setBorderPainted()方法设置边界是否显示 * setMaximumSize()方法设置按钮的大小与图标的大小一致...//设置按钮和图片的大小相同 jb2.setIcon(icon);//为按钮设置图标 jb2.setHideActionText(true); jb2.setToolTipText...,它具有一个方性图标,外加一段描述性文字 * 复选框区别于单选按钮就是每一个复选框都提供了选中和不选中两种状态 * * @author biexiansheng * */ public class

    3.2K50

    gridbagconstraints什么意思_java rectangle

    当GridBagLayout与无参的GridBagConstraints关联时,此时它就相当于一个GridLayout,只不过,用GridLayout布局的组件会随着窗口的变 大(小)而变 大(小)。...7, insets: 设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右, 默认值为(0,0,0,0) 8,weightx: 用来设置当窗口变大时,各组件沿水平方向跟着变大的比例...,gridwidth 用来设置组件所占的单位长度,默认值为1。...11,gridheight 用来设置组件所占的单位高度,默认值为1。...所以,我们在设计这种布局方式前,可以先在纸上画一下每个组件的大概位置,然后保证每一行的长度(即每一行的gridwidth之和)都相等,且每一列的长度(即每一列的gridheight之和)也相等,这样,就能按我们要的蓝图而得到实现

    56020

    创建被图像填充的组件解释几处做法解释几点

    因为当布局为null也就是绝对布局的时候,只需要设置serSize就可以了 当布局不为空时,此时布局管理器会相应的调整图像的尺寸了 如何进行图像缩放 当组件的图像太大时,甚至超过了屏幕,此时就需要进行缩放了...第二种方法进行了缩放 缩放后的大小为width*height,缩放的方法可以参照上面代码,进行等比例缩放 至于那个ImageObserver有什么用,我还不知道 API是这样解释的 此方法在任何情况下都立刻返回...不设置Label文本内容 setBorder(null);//不设置边框 setIconTextGap(0);//设置图标和文本的距离 setOpaque...边空就是当图标和文本都画完了之后,图标和文本离边框还有一定距离时,就会绘画边空了,就是白边 用setMargin(Insets m)可以设置 setMargin(new Insets(0,1,2,3...: 1.光标按下去时的外观——setPressedIcon(ImageIcon) 2.鼠标滚动外观——setRolloverIcon(ImageIcon) 3.选中外观——setSelectedIcon

    1.2K90

    java swing开发窗体程序开发(一)GUI编程

    .setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作....使用add(String text,Component c);//这个函数来指定选项卡名字和组件之间的对应关系 选项卡的位置在构造JTabbedPane对象时可以指定,其构造函数参数为int类型,实际是一个静态常量...且显示出来的组件将会占据该容器的所有空间 使用该种布局的容器在添加组件时 add(String s,Component c) s只是一个代号,方便以后显示这个组件时找到 cardlayout对象...5:null布局:表示空布局 使用时 容器对象.setLayout(null)即可 这种模式下,不限制组件的个数,每个组件都可以设置其自己的大小和位置location。...构造时设置格子 setLayout(gridLayout);//为该panel设置布局 JLabel [][]labels=new JLabel[12][

    3K30

    GridBagConstraints布局

    7,insets: 设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右, 默认值为(0,0,0,0) 8,weightx: 用来设置当窗口变大时,各组件沿水平方向跟着变大的比例...,数字越大,表示组件能得到的空间越大 9,weighty: 用来设置当窗口变大时,各组件沿垂直方向跟着变大的比例,数字越大,表示组件能得 到的空间越大 10,gridwidth...用来设置组件所占的单位长度,默认值为1。...11,gridheight 用来设置组件所占的单位高度,默认值为1。...所以,我们在设计这种布局方式前,可以先在纸上画一下每个组件的大概位置,然后保证每一行的长度(即每一行的gridwidth之和)都相等,且每一列的长度(即每一列的gridheight之和)也相等,这样,就能按我们要的蓝图而得到实现

    83030

    swing之常见组件

    设置窗体可见 12 } 13} 程序的运行结果如图12.7所示。...JButton类的常见方法 常用方法 功能描述 public JButton() 创建一个不带文本或图标的按钮 public JButton(Icon icon) 创建一个带图标的按钮 public void...setText(String text) 设置按钮上的文字为text 表12.6中列举出了JButton类的常用方法,之前创建JButton按钮都是用默认图标,从表12.6中的构造方法可看出按钮可以自定义图标...,接下来演示JButton按钮自定义图标,首先将自定义的图标“btn.jpg”放到当前目录,然后编写代码,如例12-6所示。...例12-6运行结果 图12.6中,运行程序先创建了JFrame窗体,然后指定URL引入图片,新建按钮时将icon以参数传入了自定义的图标。

    6310

    Java游戏编程不完全详解-3(爆肝一万七千字)

    /否则处理按下事件 addMessage("按下了:" + KeyEvent.getKeyText(keyCode)); //event.consume();//确定该键不处理任何事件...,包括相关的鼠标行为 保存这些事件,这样我们可以当我们需要时精确查询这些事件,而不修改AWT事件分发线程中的游戏状态 检查初始化过的键盘按下事件,然后检查该键值是否已经被其它的键位占用了 影射键盘到游戏的通用行为...而现在我们必须手动关闭这个功能,从而达到控制组件的呈现时机,比如按一个按钮时,我们让该按钮呈现被按下的样子,该组件需要呼叫repaint()方法来重绘组件的样子。...在我们的代码中,需要忽略潜在的重绘请求,如果一个按钮被按下之后的话,然后需要在动画循环的draw方法中出现。为解决这个问题,需要我们捕获重绘请求,然后忽略它。...必须两个不同的图标,一个表示初始状态,一个表示按下状态 隐藏默认的样式。

    2.2K10

    TDesign 更新周报(2022年12月第1周)

    tdesign-vue-next#2072修复分页场景下,设置 max-height 和 bordered 之后,边框线位置不正确 issue#2062行选中事件参数选中数据支持 data.push,...(#1848)Input: 宽度自适应 auto-width 支持中文拼音输入也实时调整宽度,issue#2079 @chaishi (#1853)Dialog: 修复 destroyOnClose 设置后关闭弹窗无动画效果问题...#2087)修复拼音输入时按下 Enter 触发标签确认问题 @chaishi (#2087)修复拼音输入时按下删除键触发标签删除问题,当在拼音输入完成后允许删除标签(issue#1857) @chaishi...清空按钮不展示问题 @honkinglin (#1757)SelectInput: 修复某些场景下select-input 无法输入的问题 @HelKyle (#1760)Drawer: 修复动画效果异常...@LeeJim (#1093)Result: 修复装饰性图标获取焦点的问题 @aomnisz (#1082)Tabs: 修复 placement='left' 时,面板内容不显示问题 @anlyyao

    2.2K30

    Power BI 按钮:自定义动画

    按钮的动画分为两种,一种是随着鼠标指令变化而展示的动画,比如鼠标滑过,鼠标按下;另一种是无论鼠标状态如何,都在进行的动画。 1....鼠标指令动画 ---- Power BI内置的功能可以实现许多鼠标动作动画,比如可以针对鼠标默认、悬停、按下等分别设置不同的效果。...下图展示了鼠标悬停时的放大缩小以及颜色变化功能: 在按钮样式选项卡下,图标默认时线条颜色选择黑色,悬停时选择橘色,就会发生上图的颜色变化,图标大小也同样处理。...不同的鼠标动作不仅仅可以为当前图标设置动画,也可以切换图标。下图右侧悬停时使用了不同的图案。左侧使用了相同的图案,但是头部位置发生了变化,产生了鼠标悬停惊醒了美梦中人的效果。...这种效果可以在PPT自己画,或者在网上找两个相似图案: 悬停时设置图标为起床,默认时设置为睡觉。

    3.7K10

    七个动画演示教你如何玩转Pycharm

    00 前言 这篇文章将展示 PyCharm IDE 的十个视觉动画,用于创建新项目或增强现有项目。 如果你向我展示如何用视觉动画做某事而不是用文字描述它,我会学得很快,而且记得更久。...动画片: ‍ 03 配置一个虚拟环境作为项目的 Python 解释器 我把 Jupyter IDE 和一些扩展放在一个 Docker 镜像中 我展示了如何将 PyCharm 虚拟环境配置为 Docker...请注意,在项目Photonai目录的最左侧显示中,某些文件图标的显示发生了变化。 大多数插件可以与任何 JetBrains 产品一起使用。有些仅限于商业产品。某些插件需要单独的许可证。...07 选择测试框架 PyCharm 默认测试框架是Unittests.在动画中,我将测试框架设置为pytest. 1....打开Settings/Preferences对话框(按 ⌃⌥S),然后在节点Tools 下,单击页面Python Integrated Tools。 2. 在此页面上,单击默认测试运行程序字段。

    1.8K40

    GridBagLayout 以及 GridBagConstraints 用法「建议收藏」

    :组件所占列数,也是组件的宽度 gridheight:组件所占行数,也是组件的高度 fill:当组件在其格内而不能撑满其格时,通过 fill的值来设定填充方式,有四个值 ipadx: 组件间的横向间距...ipady:组件间的纵向间距 insets:当组件不能填满其格时,通过 insets来指定四周(即上下左右)所留空隙 anchor:同样是当组件不能填满其格时,通过 anchor来设置组件的位置..., gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。...weightx,weighty —— 用来设置窗口变大时,各组件跟着变大的比例。 当数字越大,表示组件能得到更多的空间,默认值皆为0。...insets —— 设置组件之间彼此的间距。 它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。 ipadx,ipady —— 设置组件间距,默认值为0。

    1.6K30

    Java课程设计【学生信息管理系统】

    三、需求分析 程序设计的任务是实现对学生信息的管理。用户名和密码都默认设置为0,用户名或密码输入错误会弹出“用户名或密码输入不正确”的对话框。...单机X时结束程序 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置JFrame可见 jf.setVisible(true); } public...bDownload=new JButton("下 载"); private JPanel pIcon=new JPanel(new FlowLayout(FlowLayout.LEFT)); //使用本地图片文件作为图标...我在View这个程序里面首先添加了本地的图片作为图标可供下载,然后选定一个文件夹Config作为上传的路径。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    5.7K21

    如何将你的 WordPress 网站置于维护模式

    WordPress 维护模式: WordPress 维护模式要求你在不影响 SEO 和用户体验的情况下对网站进行更改。WordPress 维护模式的主要好处是你不会丢失搜索引擎排名。...对访问者使用维护模式有什么副作用 默认情况下,在维护模式下,WordPress 会创建一个启动画面,通知访问者有关维护的信息。此外,它只是一个网页,显示该网站暂时不可用。...查看以下所有内容的解释: 常规:第一个选项卡是常规选项卡。在常规选项卡的顶部,你将找到状态。要激活此插件并将你的网站设置为 WordPress 维护模式,你必须将其更改为 Active。...如果你不选择它们,则仅允许管理员。 设计:在设计选项卡中,你将创建一个有吸引力的启动画面。要开始创建初始屏幕,你可以直接转到标题(HTML 标记)选项。...在这一部分中,为你的启动画面添加标题,以及标题和文本。完成帖子后,你可以更改服务页面的背景。例如,可以更改颜色,也可以将图像用作背景图像。 模块:此选项卡允许你管理倒数计时器。设置开始时间和剩余时间。

    2.5K31

    AutoJs6 – v6.2.0 – 安卓 JavaScript 自动化工具 (Auto.js 二次开发)

    ui 模块作用域绑定错误导致部分基于 UI 的脚本无法访问组件属性的问题 修复 录制脚本后的输入文件名对话框可能因外部区域点击导致已录制内容丢失的问题 修复 文档中部分章节标题超出屏幕宽度时无法自动换行造成内容丢失的问题...修复 图标选择页面的图标元素排版异常 修复 文本编辑器启动时可能因夜间模式设置导致闪屏的问题 (试修) 修复 文本编辑器设置字体大小时可用最大值受限的问题 修复 部分安卓系统脚本运行结束时日志中无法统计运行时长的问题...修复 http.post 等方法可能出现的请求未关闭异常 修复 colors.toString 方法在 Alpha 通道为 0 时其通道信息在结果中丢失的问题 优化 重定向 Auto.js 4....系统 优化 重新设计设置页面 (迁移至 AndroidX) 优化 设置页面支持长按设置选项获取详细信息 优化 夜间模式增加 “ 跟随系统 ” 设置选项 (安卓 9 及以上) 优化 应用启动画面适配夜间模式...优化 页面布局尽可能兼容 RTL (Right-To-Left) 布局 优化 关于页面增加图标动画效果 优化 关于页面版权声明文本自动更新年份信息 优化 应用初始安装后自动决定并设置合适的工作目录

    4.8K20

    Swing组件概述

    (是否按下)或者文本框中的文本。...对于一个按钮来说,内容非常简单-它只是一组标志,用来说明按钮是否按下,是否启用等等。对于一个文本框来说,内容稍稍复杂,它是容纳当前文本的一个字符串对象。...在许多情况下,我们需要用户 只选择几个框中的一个。当用户选择另外一个时,前一个选择就自动取消。...这样的一组框通常称作一个单选按钮组(radio button group),这是因 为这些按钮的工作方式像收音机上的电台选择按钮,当按下一个按钮时,前 一个按下的按钮则自动释放。...例5​​ 问题的描述: 滑块(JSlider)的使用(用到了model的设计) 解决方案: 组合框允许用户从一组离散值中进行选择。而滑块允许进行连续值的选择, 例如,选择从1到100的任意值。

    4710
    领券