Swing/ColorTab のバックアップ(No.8)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ColorTab へ行く。
- 1 (2004-08-03 (火) 01:54:42)
- 2 (2004-09-06 (月) 09:54:10)
- 3 (2004-10-08 (金) 06:18:16)
- 4 (2004-10-14 (木) 03:57:00)
- 5 (2004-11-04 (木) 10:03:23)
- 6 (2004-12-21 (火) 10:38:09)
- 7 (2005-04-28 (木) 04:32:51)
- 8 (2005-11-11 (金) 19:47:27)
- 9 (2006-02-27 (月) 15:34:48)
- 10 (2006-04-12 (水) 19:38:24)
- 11 (2006-04-16 (日) 01:19:09)
- 12 (2006-11-10 (金) 03:39:31)
- 13 (2007-04-05 (木) 19:45:04)
- 14 (2007-05-25 (金) 14:38:13)
- 15 (2007-07-26 (木) 14:32:10)
- 16 (2008-01-16 (水) 19:08:51)
- 17 (2009-01-08 (木) 17:05:32)
- 18 (2012-01-05 (木) 21:31:08)
- 19 (2012-06-28 (木) 02:07:32)
- 20 (2013-04-04 (木) 02:27:39)
- 21 (2014-11-01 (土) 00:46:09)
- 22 (2014-12-24 (水) 14:45:44)
- 23 (2015-10-14 (水) 15:36:39)
- 24 (2017-04-13 (木) 12:08:33)
- 25 (2017-11-02 (木) 15:34:40)
- 26 (2018-03-20 (火) 13:45:07)
- 27 (2018-10-10 (水) 22:46:31)
- 28 (2019-05-22 (水) 19:34:28)
- 29 (2020-10-04 (日) 02:40:54)
- 30 (2022-07-07 (木) 14:20:26)
- 31 (2022-08-20 (土) 22:15:25)
JTabbedPaneの選択文字色を変更
編集者:Terai Atsuhiro
作成日:2004-02-09
更新日:2022-07-07 (木) 14:20:26
概要
JTabbedPaneで、選択されたタブの文字色を変更します。
サンプルコード
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); } });
解説
新たにChangeListenerを追加し、条件によってタブの文字色を変更してやります。
背景色も変更したかったのですが、Look & 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@"); (以下省略)