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

如何将所有JButtons的默认鼠标按下背景颜色覆盖为其当前背景颜色的较深阴影?

要实现将所有JButtons的默认鼠标按下背景颜色覆盖为其当前背景颜色的较深阴影,可以通过以下步骤来完成:

  1. 创建一个自定义的按钮类,继承自JButton,并重写其paintComponent方法。
代码语言:txt
复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class ShadowButton extends JButton {
    private static final Color SHADOW_COLOR = new Color(0, 0, 0, 50); // 阴影颜色,可根据需求调整透明度

    public ShadowButton(String text) {
        super(text);
        setOpaque(false); // 设置按钮透明
        setContentAreaFilled(false); // 设置按钮内容区域透明
        setBorderPainted(false); // 取消按钮边框
        setForeground(Color.WHITE); // 设置按钮前景色
        setFocusPainted(false); // 取消按钮焦点样式

        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                repaint(); // 鼠标按下时触发重绘
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                repaint(); // 鼠标释放时触发重绘
            }
        });
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g.create();

        if (getModel().isPressed()) {
            // 绘制当前背景颜色的较深阴影
            g2d.setColor(getBackground().darker());
            g2d.fillRect(0, 0, getWidth(), getHeight());
        } else {
            // 绘制按钮默认状态
            g2d.setColor(getBackground());
            g2d.fillRect(0, 0, getWidth(), getHeight());
        }

        g2d.dispose();
    }
}
  1. 在你的界面中使用ShadowButton替代原有的JButton。
代码语言:txt
复制
import javax.swing.*;
import java.awt.*;

public class MyFrame extends JFrame {
    public MyFrame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Shadow Button Demo");
        setSize(400, 300);
        setLocationRelativeTo(null);

        // 创建一个面板
        JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);

        // 创建ShadowButton并添加到面板中
        ShadowButton button1 = new ShadowButton("Button 1");
        ShadowButton button2 = new ShadowButton("Button 2");
        ShadowButton button3 = new ShadowButton("Button 3");
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);

        // 将面板添加到窗口中
        add(panel);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            MyFrame frame = new MyFrame();
            frame.setVisible(true);
        });
    }
}

这样,当鼠标按下按钮时,按钮的背景颜色会被覆盖为其当前背景颜色的较深阴影。你可以根据需要调整阴影颜色的透明度,也可以根据实际情况对ShadowButton进行进一步的定制和扩展。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云数据库MySQL。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求灵活调整配置,支持多种操作系统,具备高可用性和可扩展性。产品介绍链接:腾讯云云服务器
  • 腾讯云云数据库MySQL:提供稳定可靠的云端数据库服务,支持高性能、高可用的MySQL数据库,具备自动备份、容灾、监控等功能。产品介绍链接:腾讯云云数据库MySQL
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用chrome调试CSS

####仅查看实际应用于元素CSS 1、styles 选项卡中会显示适用于元素所有规则,包括已被覆盖声明,如果对覆盖声明不感兴趣,可以点击与 styles 相邻 computed 选项卡,仅查看实际应用于元素...3、这里更多操作还有其他一些功能,从左往右依次是 文字阴影、盒子阴影、文字颜色背景颜色。...盒模型默认单位像素,输入百分比也会转成像素值。...DevTools根据它在样式表中找到颜色生成页面调色板。 使用吸管从页面上取样 打开拾色器时,默认情况吸管 滴管处于打开状态。...要将所选颜色更改为页面上其他颜色: 1、将鼠标悬停在视口中目标颜色上。 2、点击确认。

5.5K20
  • JavaScript--DOM总结

    onmousedown 鼠标按钮被。 onmousemove 鼠标被移动。 onmouseout 鼠标从某元素移开。 onmouseover 鼠标移到某元素之上。...鼠标 / 键盘属性 属性 描述 altKey 返回当事件被触发时,"ALT" 是否被。 button 返回当事件被触发时,哪个鼠标按钮被点击。...clientX 返回当事件被触发时,鼠标指针水平坐标。 clientY 返回当事件被触发时,鼠标指针垂直坐标。 ctrlKey 返回当事件被触发时,"CTRL" 键是否被。...metaKey 返回当事件被触发时,"meta" 键是否被。 relatedTarget 返回与事件目标节点相关节点。 screenX 返回当某个事件被触发时,鼠标指针水平坐标。...screenY 返回当某个事件被触发时,鼠标指针垂直坐标。 shiftKey 返回当事件被触发时,"SHIFT" 键是否被

    7410

    【CSS进阶】CSS 颜色体系详解

    说到 CSS 颜色,相比大家都不会陌生,本文是我个人对 CSS 颜色体系一个系统总结与学习,分享给大家。 先用一张图直观感受一与 CSS 颜色相关大概覆盖了哪些内容。...文本颜色 color:red 元素背景色 background-color:red (包含各类渐变) 元素边框 border-color:red 元素阴影或文字阴影 box-shadow...这是因为边框颜色阴影颜色默认就是当前盒子文本颜色,其中 border 兼容性很好,可以支持到 IE6 。...当然 border 和 box-shadow 是特例,不是所有需要填写颜色属性不填写都会默认继承文本。...以一个按钮例,我们用 hsl 颜色表示法表示按钮 normal 状态背景色值,我们希望 hover 时候,背景色暗一点,而 active 时候背景色亮一点。

    1.7K61

    MacBook苹果电脑如何安装Adobe PS、AU、PR等软件?

    这样,你对层可见性更改(就是你点击小眼睛行为)现在也会包含在历史记录中。 不小心点错的话,和所有操作一样,Ctrl+Z回退一步就OK了。 08....这时候,你可以在图层开头小眼睛上右键点击一,在里面各个图层和文件组增加一个颜色。 这样,你可以将同类文件使用同样颜色标记,从而可以很好地区分他们。 这样看上去,是不是舒服多了?...只需按住Alt键,并把图层面板中那些“FX”图标,从一个图层拖拽到另一个图层上。这样,它样式就可以被复制过来了。 16. 改变画布背景色 有时候,我们做设计颜色可能会比较深。...这时,如果你画布背景颜色也比较深,你设计边界可能会不太好辨认。 这时,尝试着修改一画布背景色吧。...快速关闭文档 下班时候,如何用最快速度关掉PS? 好问题。 Ctrl+W是可以快速关闭当前文档。另外,按住Alt+Ctrl+W,你就可以一次性关闭所有打开文档。 别关得太快了。

    8K31

    ps快捷键常用表格

    8、Command+Option+A:选中所有图层 顾名思义,该快捷键可以让我们迅速选中所有图层,免去键盘(Command /shift)+鼠标点击来选中图层麻烦。...需要注意是,当文档中存在背景图层时,此快捷键则不会选中背景图层,只会选中除它之外所有图层。...10、D:复位颜色 PS默认前景色和背景黑色、白色,而当我们做了一段时间设计后,难免会遇到颜色已经不再是黑白,而又想用到黑白时候,这个时候,只要按下键盘快捷键D即可恢复默认状态了。...PS:所有涉及字母键快捷键都要在英文输入状态使用。 11、X:切换前景色和背景色 字母X键作用,一是前景色和背景互换,一是在蒙版状态,切换黑白画笔。...15、Shift+Option+M:切换成“正片叠底”模式 当在使用画笔工具或者污点修复画笔工具类时,此快捷键,可以把当前绘画模式从默认“正常”切换到“正片叠底”模式。

    2K20

    CSS第五天-定位

    使用,增强网页交互体验 过度所有属性:transition: all 1s === 给盒子添加阴影效果 transition: 过度属性 花费时间(s) 运动曲线 何时开始 可以简写:transition...:border-radius 让盒子四个角变圆润 数字+px 、百分比 (从上、右、、左) ---- 垂直对齐方式:vertical-align baseline 默认 top 顶部对齐 middle...焦点选择器 input:focus 链接伪类选择器 link、visited、hover、active(未访问过、访问过、鼠标悬停、鼠标) 属性选择器 input [ type = text ]...h-shadow 水平偏移量,允许负值 v-shadow 垂直偏移量,允许负值 blur 模糊度 /// color 阴影颜色 ---- 垂直方向居中: 文字、行内元素 line-height 等于height...baseline 默认值 ---- box 盒子阴影 & text 文字阴影 shadow blur spread inset ---- 只了解: 背景图片大小: contain cover 溢出隐藏

    2.7K40

    Spread for Windows Forms快速入门(5)---常用单元格类型(

    如果他们显示图片,你可以选择当按钮显示另外一张图片。你可以自定义按钮单元格颜色,包括边框颜色,文本颜色以及背景颜色。另外,按钮单元格可以显示三维外观,并且你可以自定义高亮和阴影颜色。...如果你使用有两种状态按钮,这就显示一个未按状态。 PictureDown 已经按钮设置一副图。 ShadowSize 设置阴影厚度,阴暗面和阳面的颜色(以显示出他三维效果)。...TwoState 设置按钮函数是否显示一个有两种状态拨动开关。每次你点击按钮,按钮就会更改状态。 ? 默认情况,按钮仅有一个状态,当且仅当指针时才会改变外观。...默认情况,按钮行为类似于开关按钮,这样你可以点击鼠标左键,并且当你松开鼠标时,按钮就会弹起。...如果你愿意,按钮单元格会像切换按钮或者有两种状态按钮一样,当你使用鼠标左键点击时候按钮会保持状态。按钮“否”当他们没有被时, “真”当他们被时。

    4.4K60

    EasyX图形库学习(三、用easyX实现移动小球、图片-加载、输出)

    "当前填充颜色"是指通过 setfillcolor 设置用于当前填充颜色。 查看全部三元光栅操作码请参考这里:三元光栅操作码。...当鼠标位于按钮上时,按钮背景色会变为深蓝色;否则为浅灰色。 如果在按钮上检测到鼠标左键,函数会返回true。 在主循环中,我们创建了两个按钮:“Start Game”和“End Game”。...设置背景与文本属性: 设置窗口背景黄色。 设置文本背景模式透明,这样文本在绘制时不会覆盖背景。...//支持双击 //设置窗口背景颜色 setbkcolor(YELLOW); //用设置背景颜色填充整个窗口 cleardevice(); //窗口坐标体系:窗口左上角是坐标原点,X轴向右增大...("左键\n"); Case VK_RIGHT : vx = 0; //printf("右键\n"); break; } } //双缓冲绘图:所有的绘图代码必须放在

    40210

    一键切换亮色模式和暗色模式,用Figma搞定!

    这是因为,在黑暗模式背景已经完全为黑色,此时在黑色背景上使用100透明度灰度颜色时,你颜色会完全不可见。...例如:在上面的图片中,层级一(Primary)背景白色,层级二(Secondary)背景浅灰色。 除了这些颜色之外,我们还使用了彩色版本背景,两种蓝色分别适用于浅色和深色模式。...您可以在暗色模式使用相同效果,但是由于阴影颜色已经很暗,除非更改背景颜色,否则用户可能很难看到该效果。 内阴影效果与外部投影效果非常相似,但是这次阴影效果在元素内部给出。这使您块元素看起来更厚。...请注意,在暗模式,由于阴影颜色是暗,因此可能看不到这种效果。 最后,Figma具有一个非常有用且功能强大功能,称为“自动布局”。...OK,激动人心时刻来了,如果我们已经完整创建了所有上文效果,那么只需要使用插件简单设置一,就可以一键在亮色模式和暗色模式之间转换。

    18.9K11

    我写CSS常用套路(附demo效果实现与源码)

    不论效果再怎么华丽,万变不离宗。 1、交错动画 ? 有时候,我们需要给多个元素添加同一个动画,播放后,不难发现它们会一起运动,一起结束,这样就会显得很平淡无奇。 那么如何将动画变得稍微有趣一点呢?...本demo地址:https://codepen.io/alphardex/full/abbWOPR 12、box-shadow 盒子添加阴影,增加盒子立体感,可以多层叠加,并且会使阴影更加丝滑 ?...本demo地址:https://codepen.io/alphardex/full/pooQMVp 23、mix-blend-mode PS里混合模式,常用于文本在背景特殊效果 以下利用滤色模式(...e.clientX和e.clientY来获得鼠标当前位置 既然能够获取鼠标的位置,那么跟踪鼠标的位置也就不是什么难事了:通过监听mouseenter和mouseleave事件,来获取鼠标出入一个元素时位置...(syntax)颜色类型,这样浏览器就能理解并对颜色应用插值方法来进行动画 还记得上文提到圆锥渐变conic-gradient()吗?

    1.6K20

    如何在 CSS 中设计出漂亮阴影

    然而,当我环顾网络时,很明显,大多数阴影并不像它们所希望那样丰富,网络上覆盖着模糊灰色盒子,看起来并不像影子。 在本教程中,我们将学习如何将典型箱形阴影转换为漂亮、逼真的阴影。...颜色匹配阴影 到目前为止,我们所有阴影都使用了半透明黑色,比如.这实际上并不理想。...右侧框与颜色色调和饱和度相匹配,但会降低亮度。我们最终得到了一个更有活力盒子! 当我们对阴影使用较深颜色时,也会发生类似的效果: 在我看来,这些阴影都不太对劲。...这在极端情况最为明显: hsl(0deg 0% 100%)纯白色,饱和度 0%。 hsl(0deg 100% 100%)也是纯白色,即使完全饱和。...如果我们将亮度设置 95%,则存在差异,但很微妙: 对于非常深颜色也是如此: 然而,当我们处于亮度光谱中间时,全范围饱和度是可用: 以下是我看法:50% 亮度是所有色调默认”版本。

    42310

    我写CSS常用套路(附demo效果实现与源码)

    不论效果再怎么华丽,万变不离宗。 1、交错动画 ? 有时候,我们需要给多个元素添加同一个动画,播放后,不难发现它们会一起运动,一起结束,这样就会显得很平淡无奇。 那么如何将动画变得稍微有趣一点呢?...本demo地址:https://codepen.io/alphardex/full/abbWOPR 12、box-shadow 盒子添加阴影,增加盒子立体感,可以多层叠加,并且会使阴影更加丝滑 ?...本demo地址:https://codepen.io/alphardex/full/pooQMVp 23、mix-blend-mode PS里混合模式,常用于文本在背景特殊效果 以下利用滤色模式(...e.clientX和e.clientY来获得鼠标当前位置 既然能够获取鼠标的位置,那么跟踪鼠标的位置也就不是什么难事了:通过监听mouseenter和mouseleave事件,来获取鼠标出入一个元素时位置...(syntax)颜色类型,这样浏览器就能理解并对颜色应用插值方法来进行动画 还记得上文提到圆锥渐变conic-gradient()吗?

    1.5K40

    CSS入门?一篇就够了!

    基本语法格式如下: * { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; } 例如下面的代码,使用通配符选择器定义CSS样式,清除所有HTML标记默认边距。...如果图片不重复地话,图片覆盖不到地地方都会被背景色填充。 如果有背景图片平铺,则会覆盖背景颜色。 小技巧: 我们提倡 背景图片后面的地址,url不要加引号。...,常用属性值如下: none:没有边框即忽略所有边框宽度(默认值) solid:边框单实线(最为常用) dashed:边框虚线 dotted:边框点线 double:边框双实线...盒子阴影 语法格式: box-shadow:水平阴影 垂直阴影 模糊距离 阴影尺寸 阴影颜色 内/外阴影; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WC0goKSG...相对定位,相对于原文档流位置进行定位 absolute 绝对定位,相对于上一个已经定位父元素进行定位 fixed 固定定位,相对于浏览器窗口进行定位 静态定位(static) 静态定位是所有元素默认定位方式

    5.2K20

    ps快捷键

    2)F6键打开颜色调板,然后点击色板标签,用鼠标点击可以修改前景色,Ctrl 键点击可以修改背景色。 在英文输入法,在键盘上点击D键可以使前背景默认为黑白色,X键可以切换前景色和背景色。...用于所有图层勾选情况:它可以选择所有图层与点击颜色相同或相近。...小缩览图:以小图标的形式来描述渐变颜色。 大缩览图: 复位渐变:恢复系统默认渐变颜色。 替换渐变:由系统当中颜色来替换当前面板渐变颜色。...(当前工具无数字参数,如移动工具) 【0】至【9】 保留当前图层透明区域(开关) 【/】 移去层效果 【Alt】+ 双击“效果”图标 投影效果(在“效果”对话框中) 【Ctrl】+【1】 内阴影效果...(当前工具无数字参数,如移动工具) 【0】至【9】     保留当前图层透明区域(开关) 【/】     投影效果(在”效果”对话框中) 【Ctrl】+【1】     内阴影效果(在”效果”对话框中

    3.9K50
    领券