JTabbedPane позволяет только изменить фон невыбранной вкладки. Чтобы изменить цвет выбранной вкладки, необходимо временно заменить свойство «TabbedPane.selected» UIManager.
Пример:
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
/**
* <code>TabbedPaneDemo</code>.
*/
public class TabbedPaneDemo {
private JTabbedPane tabbedPane;
public static void main(String[] args) {
SwingUtilities.invokeLater(new TabbedPaneDemo()::startUp);
}
private void startUp() {
JFrame frm = new JFrame("Tab demo");
frm.add(getTabbedPane());
frm.setSize(500, 200);
frm.setLocationRelativeTo(null);
frm.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frm.setVisible(true);
}
private JTabbedPane getTabbedPane() {
if (this.tabbedPane == null) {
// UI hack - temporary replace selection color
Color old = UIManager.getColor("TabbedPane.selected");
UIManager.put("TabbedPane.selected", Color.GREEN);
this.tabbedPane = new JTabbedPane();
UIManager.put("TabbedPane.selected", old);
this.tabbedPane.addTab("Tab 1", new JPanel());
this.tabbedPane.addTab("Tab 2", new JPanel());
}
updateTabs();
return this.tabbedPane;
}
private void updateTabs() {
for (int i = 0; i < tabbedPane.getTabCount(); i++) {
tabbedPane.setBackgroundAt(i, Color.RED);
}
}
}
Этот хак имеет один недостаток: вы больше не можете изменять фон выделения. Таким образом, каждая выбранная вкладка на панели вкладок будет иметь зеленый фон.