Swing/ColorTab のバックアップ(No.17)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
TITLE:JTabbedPaneの選択文字色を変更
Posted by terai at 2004-02-09
JTabbedPaneの選択文字色を変更
JTabbedPaneで、選択されたタブの文字色を変更します。
- &jnlp;
- &jar;
- &zip;
#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);
}
});
解説
新たに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@");
//......