java JTEXTEXTAREA圆角
我想让JTextArea有一个圆角,我做了以下代码:
public BPosTxtArea() {
super();
setOpaque(false);
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(getBackground());
g2.fillRoundRect(0, 0, getWidth() - 1, getHeight() - 1, 15, 15);
super.paintComponent(g);
}
@Override
protected void paintBorder(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(new Color(102, 102, 102));
g2.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, 15, 15);
}
但它的外部仍然有一个方形边框,如下图所示:
有人能帮我吗
# 1 楼答案
首先看一下How to Use Borders
这是一个非常简单的例子:
问题是,边框被绘制在组件填充区域的“内部”,这意味着角落将与填充区域的颜色相同。使用
Border
无法解决这个问题诀窍是创建第二个组件,可以在其上绘制边框(通过
paintComponent
,将边框内的区域填充为与文本区域相同的颜色),然后将该组件添加到其中更新
根据您的代码示例,您没有覆盖
getInsets
,这将是非常重要的,另一件事是,您的JTextArea
似乎在JScrollPane
之内一种解决方案是将
border
设置为null
以用于JScrollPane