TITLE:JTabbedPaneの選択文字色を変更

JTabbedPaneの選択文字色を変更

編集者:Terai Atsuhiro
作成日:2004-02-09
更新日:2022-07-07 (木) 14:20:26

概要

JTabbedPaneで、選択されたタブの文字色を変更します。

#screenshot

サンプルコード

 tab.addChangeListener(new ChangeListener() {
   public void stateChanged(ChangeEvent e) {
     JTabbedPane jtab = (JTabbedPane)e.getSource();
     jtab.setVisible(false);
     int sindex = jtab.getSelectedIndex();
     String str = jtab.getTitleAt(sindex);
     for(int i=0;i<jtab.getTabCount();i++) {
       if(i==sindex && "タイトル1".equals(str)) {
         //jtab.setBackgroundAt(i, Color.green);
         jtab.setForegroundAt(i, Color.green);
       }else if(i==sindex) {
         Color sc = (sindex%2==0)?Color.red:Color.blue;
         //jtab.setBackgroundAt(i, sc);
         jtab.setForegroundAt(i, sc);
       }else{
         //jtab.setBackgroundAt(i, null);
         jtab.setForegroundAt(i, Color.black);
       }
     }
     jtab.setVisible(true);
   }
 });
  • &jnlp;
  • &jar;
  • &zip;

解説

新たに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());
   }
   final JFrame frame = new JFrame("@title@");
 ......

参考リンク

コメント