首页
学习
活动
专区
工具
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("·备案号啥"); //上ns左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.4K10

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

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

3.6K30
  • 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

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

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

    5.4K10

    gridbagconstraints什么意思_java rectangle

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

    55620

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

    因为当布局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][

    2.8K30

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

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

    2.2K10

    GridBagConstraints布局

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

    79830

    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.6K10

    七个动画演示教你如何玩转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.5K30

    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.5K21

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

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

    2.4K31

    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.6K20

    导入 3D 模型-将您自己设计融入现实生活中

    中心点 我要谈下一件事是支点。它是所有箭头交集。旋转对象,它将转向该点。最重要是,当您将对象添加到曲面上,初始放置将是该点。现在,它位于手机左下方,所以不好。我们将把它改为模型中间部分。...考虑到父节点对x,y和z放置0并且原始枢轴点位于左侧,我们应该将group_0x位置设置-1.410。选择SketchUp,您将看到x位置是固定。对z执行相同操作,将其设置2.818。...现在枢轴点位于模型中心。 展平节点 最后,我们现在需要做是将所有节点展平只有一个节点。如果我们这样做,我们稍后会遇到一些操纵模型问题。例如,您将旋转手机边框不是整个手机。...然后,选择除按钮图标之外那些文件夹中所有图像,并将Scales属性更改为Single Scale。这些图像不是图标,我们不需要多种尺寸。 我们仍然保留了应用图标。...单击AppIcon,在finder中打开文件夹App Icon,并将2x和3x图标放在适当位置。 当应用程序出现在我们设备上,让我们将图标与另一个名称相关联,不是项目名称。

    3.1K10

    10种帮你改善UI设计质量窍门

    所以在设计下一个产品,不妨考虑如何将这些有趣元素融入你设计中。 02.加入一些图标或者表情符号 ? 添加表情符号或者图标可以帮你一目了然了解元素功能。...某些元素是有全局意义,所以不要通过干扰用户熟悉内容让用户感到困惑,尽可能使用约定俗成图标定义。比如用户图标代表用户个人资料,“+”图标表示添加,购物车就是表示购物车,齿轮表示设置等等。...你开发应用加入深色主题是一个非常棒选择,深色模式会让眼睛更舒服一些,让我们感觉自己不是总盯着灯泡。 在黑暗模式进行设计与在浅色模式下设计并没有太大不同,你只是需要一个不同配色方案。...用户期待看到动效,但是这种动效必须基于真实物理效果和运动原理,不能想当然随便乱动。例如,我在房间里踢一个球,那么在整个过程中它速度不会一样。它会在开始快速运行,然后由于失去动力减速。...在做如何决策之前,你都应该明确一点,这样做可以改善用户体验,不是单纯为了美观。我已经提到过很多次,不要忘记应用是用户完成某种目标而设计,不是单纯为了好看。

    72820

    Java-GUI 编程之 Swing

    独立于本地平台Swing组件被称为轻量级组件;依赖于本地平台 AWT 组件被称为重量级组件。  ...例如,按钮JButton有一个维护其状态信息模型ButtonModel对象 。 Swing组件模型是自动设置,因此一般都使用JButton,而无须关心ButtonModel对象。...相对于 AWT 组件, Swing 组件具有如下 4 个额外功能 : 可以为 Swing 组件设置提示信息。使用 setToolTipText()方法,组件设置对用户有帮助提示信息 。...为了允许在 Swing 组件中使用图标, SwingIcon 接口提供了 一个实现类: Imagelcon ,该实现类代表一个图像图标。 支持插拔式外观风格。...以 JButton 例,其 UI 代理继承层次下图: ​ ​ 如果需要改变程序外观风格, 则可以使用如下代码: //容器: JFrame jf = new JFrame(); try {

    2.4K10
    领券