以下屏幕截图显示了TextBubbleBorder
1的测试.我想让矩形之外的组件的角完全透明并显示它下面的任何组件.我找到了一种方法,通过Clip
在Graphics2D
实例上设置(表示圆角以外的区域)并调用,将标签的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)