当前位置: 首页 > 知识库问答 >
问题:

J面板透明度问题

张腾
2023-03-14

我有一个深灰色的JPanel,上面有一个JLabel。我将新颜色(0、0、0、5f)设置为标签的背景,并使用按钮多次更改文本。问题是,每次文本更改时,前一个文本仍保留在新文本后面。我将文本从“123456789”改为“1234567”、“12345”和“123”。以下是截图:

我该如何摆脱这个“阴影”?

共有3个答案

梁俊智
2023-03-14

试试这个,也许它会解决你的问题:在行动中。。

public void actionPerformed(ActionEvent e) {
    final JLabel tmpLabel = new JLabel(value[++i]); //change text
    label.setFont(new Font("Times New Roman", 1, 36));
    label.setForeground(new Color(255, 255, 255));
    label.setBackground(new Color(0, 0, 0, .5f));
    label.setHorizontalAlignment(SwingConstants.CENTER);
    label.setOpaque(true);
    label.setBounds(10, 10, 270, 70);
    label = tmpLabel; //replace the entire label with a new label
}
严锐
2023-03-14

这个相关的例子也使JPanel透明。

吴展
2023-03-14

我有一个深灰色的JPanel,上面有一个JLabel。我设置了新颜色(0,0,0,5f)(tranparent)

Swing不支持透明背景。

Swing期望组件是:

  1. 不透明-这意味着在进行自定义绘制之前,组件将首先使用不透明的颜色重新绘制整个背景,或

setOpaque(...)方法用于控制组件的不透明属性。

在任何一种情况下,这都可以确保移除任何绘画作品,并正确完成定制绘画。

如果你想使用tranparency,那么你需要自己进行自定义绘制,以确保背景被清除。

面板的定制喷漆为:

JPanel panel = new JPanel()
{
    protected void paintComponent(Graphics g)
    {
        g.setColor( getBackground() );
        g.fillRect(0, 0, getWidth(), getHeight());
        super.paintComponent(g);
    }
};
panel.setOpaque(false); // background of parent will be painted first

每一个使用透明度的组件都需要类似的代码。

或者,您可以查看自定义类的透明背景,该自定义类可用于任何将为您完成上述工作的组件。

 类似资料:
  • 我在FrameLayout中使用google地图片段进行布局。另外,我将新视图放置在带有渐变背景的地图上。布局: 列表\u淡入\u顶部: 开始/结束和中心颜色。此渐变使用两条光线线绘制: 没有中心颜色的渐变的相同行为: 如何绘制从黑色(或半透明黑色)到全透明的平滑线性渐变? 我尝试打开/关闭硬件加速,“getWindow()。setFormat(PixelFormat.RGBA_8888);'什么

  • 问题内容: 我在玩CSS属性。 它非常适合该框(50%或30%黑色)-问题是框内的文本 也是 透明的。 我希望文本在具有30%透明度的框中为100%白色。 解决方案是对CSS进行一些调整,或者将a 用作背景并忘记设置。 告诉我,如何在内部使用100%不透明度的文本来实现30%不透明度。 提前致谢 问题答案: 您的选择是: 使用CSS3:。 绝对将两个标签放置在彼此的顶部。其中之一是背景,并且具有设

  • 我是新来的CSS渐变,并试图抓住它,我试图应用一个白色透明的css渐变包围一个圆形div的边界与背景图像。不幸的是,我得到的效果不是我想要的效果,我怎么能让它让图像看起来不那么被梯度遮挡,梯度也不像它那么宽,我想让它只影响图像的边界,比如也许外环大约30像素深。 我的代码:

  • 我想给图表背景一个透明的外观(不是完全透明但有一点点)。这是我的代码。我添加了几行代码来增加透明度,但我想并没有变得透明。写完这些代码行后,图表backgound显示为灰色。

  • 前面在学习《 CSS颜色》时我们已经了解,通过 rgba()、hsla() 可以设置颜色的透明度,但是它们只能在定义颜色的同时设置透明度,无法对图像或者其它元素设置透明度。 CSS 中提供了一个 opacity 属性用来设置元素的透明度,它不仅对颜色有效,对图像或者页面中其它的元素也有效。其语法格式如下: opacity: number; 其中 number 为一个 0~1 之间的浮点数(小数),

  • 我正在尝试构建一个基于按钮的动态应用程序,这些按钮从创建的面板内部切换JFrame的主面板(这是我的应用程序的顶部内容)。 这个问题更多的是设计问题,而不是开发问题。我不确定我的设计,但我会试着解释一下。 我有一个JFrame代表我的应用程序,其中包含一个JTabbedPane(和多个Tabs)。每个选项卡都包含一个默认的JPanel,在那个JPanel中,我调用一个正在呈现我的视图的控制器(我正