当前位置: 首页 > 面试题库 >

JButton上的GIF动画,将鼠标悬停时播放

能钟展
2023-03-14
问题内容
Icon icon = new ImageIcon(getClass().getResource( "/img/icon.gif" ) );
aButton = new JButton("Its a button", icon);

是否有某种方法可以阻止动画播放?我当时正在考虑为gif分配一个静态jpg,然后当我将鼠标悬停时分配给gif动画,但是我认为没有发生将鼠标取下的事件,MouseMotionListener因此可以加载静态jpg。

gif在按钮中循环,但是,如果我将鼠标悬停在它上面,它将消失。

如果鼠标光标不在按钮上,如何使gif静态化?

如果使用MouseMotionListener,如果我取下鼠标,是否会触发事件?

@Override
public void mouseMoved(MouseEvent e) {
//play the gif
//if I take mouse off, call some method to stop playing animated gif
}

@Override
public void mouseDragged(MouseEvent e) {
}

问题答案:

看到:

  • setIcon(Icon)
  • setDisabledIcon(Icon)
  • setPressedIcon(Icon)
  • setRolloverIcon(Icon)
  • setSelectedIcon(Icon)

无需设置显式鼠标侦听器,切换将自动发生。

EG在此示例中,我没有将MediaTracker弹出的图像添加到标签中以允许加载时间。最终用户是ImageObserver(等待,直到看到它旋转,然后关闭第一个对话框)。

import java.awt.*;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.swing.*;

public class ImageSwapOnButton {

    public static void main( String[] args ) throws Exception {
        URL url = new URL("http://1point1c.org/gif/thum/plnttm.gif");

        Image image = Toolkit.getDefaultToolkit().createImage(url);
        ImageIcon spinIcon = new ImageIcon(image);
        JOptionPane.showMessageDialog(null, new JLabel(spinIcon));

        // create a static version of this icon
        BufferedImage bi = new BufferedImage(150,150,BufferedImage.TYPE_INT_ARGB);
        Graphics g = bi.getGraphics();
        g.drawImage(image,0,0,null);
        g.dispose();
        ImageIcon staticIcon = new ImageIcon(bi);

        JButton button = new JButton(staticIcon);
        button.setRolloverIcon(spinIcon);
        JOptionPane.showMessageDialog(null, button);
    }
}

另外,请勿将静态图像设为JPEG。JPEG有损,不支持透明。使用单帧GIF或PNG。



 类似资料:
  • 问题内容: 我正在尝试在JButton上创建自定义鼠标悬停事件。原因是我的JButton当前是图像,因此我必须删除所有边框和动画,而不能删除所有边框和动画。所以我这样做: 这非常适合仅显示图像,并且按钮实际上可以正常工作。我想知道是否有任何预建方法可以做到这一点,或者我将如何学习做自己想做的事情。 更具体地说,当我将鼠标悬停在上方时,我希望图像做的只是使其变得更大一点。 到目前为止,我已经尝试过这

  • 问题内容: 全屏是提供全屏框架的另一类。JButton上面有ImageIcon。bg1.png是背景图像 问题 是这些JButton仅在鼠标悬停时才可见,否则它们不出现。 问题答案: 您可能会遇到布局问题,在该问题中,您尝试将具有绝对界限的JButton添加到使用非null布局管理器的容器中。意见建议 不要使用setBounds和绝对定位来调整和放置组件。 阅读并使用布局管理器为您完成繁重的工作:

  • 问题内容: 我想将鼠标悬停在GUI(地图)上的多个JButton上,并显示该位置的名称,例如曼彻斯特和伦敦。我的代码适用于一个按钮,但不适用于一个以上的按钮,并且为所有按钮位置打印最后一条消息(因为我有10个按钮)。 如果为true,则通过my 方法在指定区域的GUI上绘制文本。 我该如何解决? 问题答案: 为什么不使用现有的工具提示API? 您甚至可以使用HTML文本来生成格式化结果。 如果图像

  • 我有一个用vue.js呈现的视频海报图像/JPG列表。在鼠标悬停时,这些图像应替换为gif动画。在mouseout上,我希望再次看到图像/jpg。因此,我能够跟踪mouseover/out事件,但替换src属性并没有按预期工作: 替换mouseOver和mouseOut函数中的src属性,而不是在组件模板中放入太多逻辑,这有意义吗?如何在vue.js中操作DOM的这一部分?

  • 本文向大家介绍赛普拉斯将鼠标悬停在动作上,包括了赛普拉斯将鼠标悬停在动作上的使用技巧和注意事项,需要的朋友参考一下 鼠标悬停操作在网页中非常常见,一旦我们将鼠标悬停在其上,就会看到一个元素列表。赛普拉斯不像Selenium这样的其他自动化工具那样支持鼠标悬停操作,因为它认为它很脆弱。 赛普拉斯应操纵DOM元素以执行鼠标悬停动作。赛普拉斯采用了JQuery中的method的帮助。的节目()方法的显示

  • 问题内容: libgdx中是否有任何侦听器可以让我检测到鼠标悬停而不是鼠标悬停。在场景2D的按钮类中,您有2种方法isOver和isPressed,但是它们执行相同的操作…还有其他问题吗?还有另一种方法来检测鼠标悬停在actor上吗? 问题答案: 还有的可以连接到和它提供的事件,如下面的: 该事件从根本上来说意味着鼠标开始悬停在角色上,意味着它“离开”了角色的区域。它还有一个事件,您可以使用该事件