我正在为 Java 应用程序开发一个 GUI,我想要一个背景图像。问题是我有一种充满按钮的“抽屉”,当被选中时,按钮会以红色突出显示。
我正在使用方法 buttonName.setBackground(new Color(255, 102, 102, 200)); 同时设置高亮按钮和透明度。问题是,尽管该方法有效并使按钮透明,但透明度会显示按钮后面框架的随机部分,这些是标题,另一个按钮,按钮所在的 JScrollPane 的滚动条等。按钮仍然显示,并且按钮有效,但背景显示来自其他按钮或框架部分的文本。
此外,我意识到,如果我单击一个按钮并将鼠标多次移到所选按钮上,透明度就会开始累积,直至变成纯色。
如果有人知道如何制作干净透明的按钮,我将不胜感激。
我在这里留下了源代码和我正在使用的测试图像。 https://drive.google.com/file/d/1l8R52WTDyP93L0UhTNd3oorD7Qhv-TcP/view?usp=sharing
在这张图片中,您可以看到我遇到的 3 种错误,在第一种错误中,您可以看到背景中有另一个按钮,滚动条显示在按钮的左侧。在第二个中,它是导航面板的标题。在第三个中,我将鼠标多次移到选定的按钮上,它变成了纯色而不是透明的。
编辑:
如果我将它应用到导航面板,我决定检查错误是否仍然存在,因为当应用程序完成时它也必须是透明的。于是我在上面代码的第82行和83行添加了如下几行代码:
panelNav.setBackground(new Color(0, 0, 0, 200)); panelNav.setOpaque(true);
在另一张图片中,我将透明度应用于整个导航面板,这是一个 JLabel。在第一个图像中显示了显示框架时出现的内容,甚至还有部分框架显示在导航面板下方。在第二个中显示了当我使用一次滚动条时会发生什么。
编辑 2:我将所有用作 JPanel 的 JLabel 替换为实际的 JPanel。可悲的是,错误仍然存在。我在主 JPanel 中添加了一个额外的按钮,我这样做是因为我认为错误起源于向 JScrollPane 添加按钮。但问题似乎直接在于我如何实现方法 buttonName.setBackground()。
这是新版本的代码: https://drive.google.com/file/d/1PuHMkEYNbBoafqs5XiyUaeCkIyXfnHFJ/view ?usp=sharing
汪汪一只猫
相关分类