Сохранение указанного цвета для JTabbedPane - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть этот макет в JTabeedPane с фоном, как показано. Цвет фона не меняется на цвет, как показано. При проектировании я придерживаюсь следующей структуры:

JFrame (Background color: [0,115,153])
 JPanel (Background color: [3,50,67])
  JPanel (Background color: [16,110,173])
   ...
  JPanel  (Background color: [3,50,67])
   JTabbedPane  (Background color: [3,50,67])
    Tab 1,2,3   (Background color: [3,50,67])

Белый цвет не включен ни в один из цветов переднего плана или фона, но он все еще виден там. Я проверил это, сохранив компоненты Непрозрачный и отключив Непрозрачный , но безрезультатно. Как мне его удалить?

enter image description here

1 Ответ

2 голосов
/ 06 февраля 2020

Боюсь, это не так тривиально, как можно было бы ожидать, потому что этим форматированием полностью управляет Look and Feel. Однако вы можете позвонить tabbedPane.setUI(yourCustomUI);, чтобы установить пользовательский интерфейс. Я подготовил для вас пользовательский интерфейс, надеюсь, он сэкономит вам время (см. Встроенные комментарии для настройки):

// your code...

tabbedPane.setUI(new MinimalisticTabbedPaneUI());

// your code...

public static class MinimalisticTabbedPaneUI extends BasicTabbedPaneUI {

    // paints the border around the currently visible content
    @Override
    protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
        // do nothing
    }

    // paints the border around each tab
    @Override
    protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) {
        // only paints a border if the tab is selected, edit this to add your personal formatting
        if(isSelected){
            super.paintTabBorder(g, tabPlacement, tabIndex, x, y, w, h, isSelected);
        }
    }
}
...