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

Java Swing JButton在悬停时颜色变化缓慢(&L)

Java Swing是Java语言的一个图形用户界面(GUI)工具包,用于创建桌面应用程序。JButton是Swing库中的一个组件,用于创建按钮。

当需要在悬停时改变JButton的颜色并实现缓慢变化时,可以使用Java的动画效果库来实现。以下是一个示例代码:

代码语言:txt
复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class HoverButtonExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hover Button Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);

        JButton button = new JButton("Hover Me");
        button.setBackground(Color.BLUE);
        button.setForeground(Color.WHITE);

        button.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                animateColorChange(button, Color.RED);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                animateColorChange(button, Color.BLUE);
            }
        });

        frame.getContentPane().add(button);
        frame.setVisible(true);
    }

    private static void animateColorChange(JButton button, Color targetColor) {
        Color initialColor = button.getBackground();
        float[] initialHSB = Color.RGBtoHSB(initialColor.getRed(), initialColor.getGreen(), initialColor.getBlue(), null);
        float[] targetHSB = Color.RGBtoHSB(targetColor.getRed(), targetColor.getGreen(), targetColor.getBlue(), null);

        Timer timer = new Timer(10, null);
        timer.addActionListener(e -> {
            float[] currentHSB = new float[3];
            for (int i = 0; i < 3; i++) {
                currentHSB[i] = initialHSB[i] + (targetHSB[i] - initialHSB[i]) * (float) timer.getDelay() / 1000;
            }
            button.setBackground(Color.getHSBColor(currentHSB[0], currentHSB[1], currentHSB[2]));
            button.repaint();

            if (Arrays.equals(currentHSB, targetHSB)) {
                timer.stop();
            }
        });

        timer.start();
    }
}

这段代码创建了一个带有"Hover Me"文本的按钮,并在悬停时将按钮的背景颜色从蓝色缓慢变化为红色,鼠标离开时又缓慢变回蓝色。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云容器服务(TKE)。腾讯云服务器提供了可靠的云计算基础设施,可用于部署和运行Java Swing应用程序。腾讯云容器服务是一种高度可扩展的容器管理服务,可用于部署和管理Java Swing应用程序的容器化版本。

腾讯云服务器产品介绍链接:https://cloud.tencent.com/product/cvm 腾讯云容器服务产品介绍链接:https://cloud.tencent.com/product/tke

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

相关·内容

领券