# Schriftfarbe von jTabbedPane und Button Ändern



## Andreas1989 (27. Mrz 2009)

Hallo zusammen,
weis jemand wie ich die Schriftfarbe von einer jTabbedPane(von tabs) und von Border änder?
Bei dem jTabbedPane wird der Text in der klasse BasicTabbedPane geschrieben - die Methode heißt paintText. Hier wird eine super Methode aufgerufen in der ein Font übergeben wird. Kann ich von einem awt Font die Schriftfarbe von Schwarz auf Weiss ändern??

Danke!


----------



## Ebenius (27. Mrz 2009)

Ein Font hat keine Farbe.


----------



## Andreas1989 (27. Mrz 2009)

Okee,
hmm wie kann ich dann aber die Schriftfarbe von einem JTabbedPane der nicht aktiven tabs auf weiss setzten. und die Schriftfarbe für Buttons auch??


----------



## Ebenius (27. Mrz 2009)

A snippet's worth a thousand words:  [Highlight=Java]final JTabbedPane tabbedPane = new JTabbedPane();
final JButton button = new JButton("huhu");
tabbedPane.addTab("huhu", button);

/* Set foreground colors */
button.setForeground(Color.GREEN.darker());
tabbedPane.setForeground(Color.GREEN.darker());

final JFrame f = new JFrame("Tabbed Pane Colors");
f.setContentPane(tabbedPane);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);[/Highlight]
Ebenius


----------



## Andreas1989 (27. Mrz 2009)

Hallo,
supi funktioniert.
Wollt jetzt alle Schriften der Tabs Weiss machen bis auf die des aktivierten Tabs. Die Schrift will ich Schwarz machen. 
Hab mal so was veruscht:
jTPMain.setForegroundAt(jTPMain.getSelectedIndex, Color.BLACK);
Da bekomm ich aber leider ne  java.lang.ArrayIndexOutOfBoundsException: -1 ...
Muss ich den Aufruf aus einem Listener Changer starten??


----------



## Ebenius (27. Mrz 2009)

Andreas1989 hat gesagt.:


> jTPMain.setForegroundAt(jTPMain.getSelectedIndex, Color.BLACK);
> Da bekomm ich aber leider ne  java.lang.ArrayIndexOutOfBoundsException: -1 ...


-1 bekommst Du wenn kein Tab selektiert ist. Das passiert normaler Weise beim Initialisieren, wenn es noch gar keine Tabs gibt...



Andreas1989 hat gesagt.:


> Muss ich den Aufruf aus einem Listener Changer starten??


???:L Einem was bitte wem?

Ebenius


----------



## Andreas1989 (27. Mrz 2009)

Hallo,
ich meine ob ich den Aufruf 
	
	
	
	





```
try
    {
      jTPMain.setForegroundAt(jTPMain.getSelectedIndex(), Color.BLACK);
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      System.out.println(e);
    }
```
jedes mal aufrufen muss, nachdem ich ein Tab geändert habe. In dem ich die Methode durch ein Actionlistener aufrufe


----------



## Ebenius (27. Mrz 2009)

Nicht unbedingt. Kannst auch getForegroundAt(int) überschreiben: [Highlight=Java]final JTabbedPane tabbedPane = new JTabbedPane() {

  @Override
  public Color getForegroundAt(int index) {
    return getSelectedIndex() == index ? Color.BLACK : super
          .getForegroundAt(index);
  }
};[/Highlight]
Ebenius


----------

