Я работаю над проектом, в котором мне нужно изменить стиль из JTextFields
.Я расширил BasicTextFieldUI
и переопределил метод paintSafely
, но когда он рисует компонент, он рисует border (даже если для границы установлено значение null
).Я попытался заглянуть внутрь класса BasicTextUI
, чтобы увидеть, что может нарисовать эту границу, и ничего не нашел.
Вопрос,
Почему этот код создает границувокруг компонентов?
Это мой код:
public class CustomTextField extends BasicTextFieldUI{
int borderThickness, edgeRoundness;
@Override
protected void paintSafely(Graphics g) {
JComponent c = (JComponent)this.getComponent();
Graphics2D g2 = (Graphics2D)g;
g2.setColor(c.getBackground());
borderThickness = 2;
edgeRoundness = 20;
g2.setColor(c.getForeground());
g2.fillRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
g2.drawRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
g2.setColor(c.getBackground());
g2.fillRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
g2.drawRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
super.paintSafely(g);
}
}
В чем может быть ошибка?Есть ли другой метод, используемый для покраски компонента?