Я пытаюсь создать пользовательский TabbedPaneUI, расширяя BasicTabbedPaneUI
У меня проблема с настройкой TextColor. Когда я устанавливаю TextColor, отображается рамка, когда панель сфокусирована и включена.
Как вы можете видеть, панель с заголовком Test
включена / выбрана. Панель имеет белую рамку, и я не хочу, чтобы она была. Я уже переопределил paintTabBorder
@Override
protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) {
//We do nothing here to disable painting the Tab Border
}
вот как я переопределяю paintText
, чтобы изменить цвет текста
@Override
protected void paintText(Graphics g, int tabPlacement, Font font, FontMetrics metrics, int tabIndex, String title, Rectangle textRect, boolean isSelected) {
g.setFont(font);
View v = getTextViewForTab(tabIndex);
if (v != null) {
// html
v.paint(g, textRect);
} else {
// plain text
int mnemIndex = tabPane.getDisplayedMnemonicIndexAt(tabIndex);
if (tabPane.isEnabled() && tabPane.isEnabledAt(tabIndex)) {
//Change the text to White here <- Causing Border Issues
g.setColor(Color.WHITE);
SwingUtilities2.drawStringUnderlineCharAt(tabPane, g,
title, mnemIndex,
textRect.x, textRect.y + metrics.getAscent());
} else { // tab disabled
g.setColor(tabPane.getBackgroundAt(tabIndex).brighter());
SwingUtilities2.drawStringUnderlineCharAt(tabPane, g,
title, mnemIndex,
textRect.x, textRect.y + metrics.getAscent());
g.setColor(tabPane.getBackgroundAt(tabIndex).darker());
SwingUtilities2.drawStringUnderlineCharAt(tabPane, g,
title, mnemIndex,
textRect.x - 1, textRect.y + metrics.getAscent() - 1);
}
}
}
g.setColor(Color.WHITE);
вызывает проблему с границей, я подтвердил это, установив Цвет на что-то другое, а не на Белый, а граница была таким же цветом, как и Текст.