相关疑难解决方法(0)

边角圆角和透明度

以下屏幕截图显示了TextBubbleBorder1的测试.我想让矩形之外的组件的角完全透明并显示它下面的任何组件.我找到了一种方法,通过ClipGraphics2D实例上设置(表示圆角以外的区域)并调用,将标签的BG颜色限制为"在边框内" clearRect().这可以在Label 1.

边境测试

但是,当父面板上有红色BG(或任何非标准颜色)时,您可以看到此方法的缺点.角落默认为默认面板颜色(最容易看到Panel 2).

最终,我希望这能够在父容器中使用非标准颜色,但部分灵感来自于我需要做什么才能使用渐变颜料复制此组件?

有人知道让这些角落透明的方法吗?

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.*;

public class BorderTest {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                JPanel gui = new JPanel(new GridLayout(1,0,5,5));
                gui.setBorder(new EmptyBorder(10,10,10,10));
                gui.setBackground(Color.RED);

                AbstractBorder brdr = new TextBubbleBorder(Color.BLACK,2,16,0);

                JLabel l1 = new JLabel("Label 1");
                l1.setBorder(brdr);
                gui.add(l1);

                JLabel l2 = new JLabel("Label 2");
                l2.setBorder(brdr);
                l2.setBackground(Color.YELLOW);
                l2.setOpaque(true); …
Run Code Online (Sandbox Code Playgroud)

java swing transparency border awt

29
推荐指数
3
解决办法
5万
查看次数

标签 统计

awt ×1

border ×1

java ×1

swing ×1

transparency ×1