【发布时间】:2016-01-27 19:38:37
【问题描述】:
我创建了一个自定义边框类,我在其中填充了一个矩形作为组件的背景。请注意,这个边框将来会有更复杂的形状,而不仅仅是一个简单的矩形。
当我将我的边框添加到组件时,组件的文本将出现在边框后面并使文本不可读。 (结果如下图所示。)
有没有办法在文字下方画边框?
我的边框类:
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() 的彩色方块是禁忌。
【问题讨论】:
-
在组件的内容上绘制边框。你想要的是画一个背景。
标签: java swing graphics border