在Swing中组件的文本下方绘制边框

斯皮茨

我创建了一个自定义边框类,在其中填充了一个矩形以用作组件的背景。请注意,此边框将来会具有更复杂的形状,而不仅仅是一个简单的矩形。

当我将边框添加到组件时,组件的文本将出现在边框后面,并使文本不可读。(结果如下图所示。)

有没有办法在文本下方绘制边框?

http://i.stack.imgur.com/Y9ehY.png

我的边防课:

public class CustomBorder extends AbstractBorder {
    private static final long serialVersionUID = 1L;

    @Override
    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(new Color(125, 125, 125, 255));
        g2d.fillRect(x - 10, y - 10, width + 20, height + 20);
    }

    @Override
    public Insets getBorderInsets(Component c) {
        return super.getBorderInsets(c);
    }

    @Override
    public Insets getBorderInsets(Component c, Insets insets) {
        return super.getBorderInsets(c, insets);
    }

    @Override
    public boolean isBorderOpaque() {
        return super.isBorderOpaque();
    }
}

主要的:

public static void main(String[] args) {
    JLabel label = new JLabel("JLabel text");
    label.setBorder(new CompoundBorder(new EmptyBorder(50, 20, 20, 20), new CustomBorder()));

    JFrame frame = new JFrame("");
    frame.setLayout(new FlowLayout());
    frame.setSize(200, 200);
    frame.add(label);
    frame.setVisible(true);
}

编辑:我还应该注意,我将对聊天程序使用此边框,该程序将使用气泡状消息,因此使用setBackground()的彩色正方形是禁止的。

卡米克尔

请参阅“仔细研究绘画机制”,它解释了绘画的完成方式。在绘制标签文本之后,将绘制边框。

您到底想做什么?您的边框绘画代码没有意义。您试图填充等于组件宽度/高度+ 20像素的矩形,这意味着您试图绘制大于组件的区域。

如果您只是想在标签上绘制背景,则可以使用:

label.setOpaque( true );
label.setBackground(...);

编辑:在下面的评论部分链接的此答案的代码解决了该问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX 中的 Swing 绘制组件

来自分类Dev

如何在UITextField中的文本上绘制边框

来自分类Dev

绘制隐藏的Java swing组件

来自分类Dev

无法在Java swing的面板中的文本框下方获取bordertitle?

来自分类Dev

Swing中组件的格式

来自分类Dev

CSS边框底线不在文本的正下方

来自分类Dev

非常简单的Swing骰子程序中的神秘(并发/组件绘制?)错误

来自分类Dev

iOS NSString drawInRect始终在RectFrame顶部下方绘制文本

来自分类Dev

D3.js:在文本下方绘制矩形

来自分类Dev

重用Java中的swing组件

来自分类Dev

重用Java中的swing组件

来自分类Dev

更新edt中的swing组件

来自分类Dev

在圆形边框中添加文本

来自分类Dev

在matplotlib中绘制文本

来自分类Dev

在文本中绘制曲线

来自分类Dev

我可以使用哪个Swing文本组件在浏览器中打开超链接?

来自分类Dev

在MATLAB中在图像周围绘制彩色边框?

来自分类Dev

iOS:UIButton在iOS中绘制圆形边框

来自分类Dev

使CSS中白色文本下方的背景变暗

来自分类Dev

表格中图像下方的中心文本

来自分类Dev

如何在JavaFX标签的文本周围绘制边框?

来自分类Dev

Java Paint未在Swing中绘制

来自分类Dev

java swing中绘制矩形时出错

来自分类Dev

Java Paint未在Swing中绘制

来自分类Dev

是否可以从matplotlib中的刻度线下方的某处绘制箭头

来自分类Dev

如何在Shell脚本中的星型下方绘制?

来自分类Dev

在第一个文本下方绘制第二个文本

来自分类Dev

如何从菜单栏的边框开始下拉而不是直接显示在文本下方

来自分类Dev

IE11:输入字段的文本滑到底部边框下方