Posted by terai at 2004-02-09
JTabbedPaneの選択文字色を変更
JTabbedPaneで、選択されたタブの文字色を変更します。
サンプルコード
tab.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JTabbedPane jtab = (JTabbedPane)e.getSource();
int sindex = jtab.getSelectedIndex();
String str = jtab.getTitleAt(sindex);
for(int i=0;i<jtab.getTabCount();i++) {
if(i==sindex && jtab.getTitleAt(sindex).endsWith("1")) {
jtab.setForegroundAt(i, Color.GREEN);
}else if(i==sindex) {
Color sc = (sindex%2==0)?Color.RED:Color.BLUE;
jtab.setForegroundAt(i, sc);
}else{
jtab.setForegroundAt(i, Color.BLACK);
}
}
}
});
解説
新たにChangeListenerを追加し、条件によってタブの文字色を変更しています。
背景色も変更したかったのですが、Look and Feelなどによってはうまくいかないようです。Windows XPでタブの背景色を変更したい場合は、以下のようにSystem.setProperty("swing.noxp", "true")とする必要があります。
public static void createAndShowGUI() {
System.setProperty("swing.noxp", "true");
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e) {
throw new InternalError(e.toString());
}
JFrame frame = new JFrame("@title@");
//......