Swing/ColorTab の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ColorTab へ行く。
- Swing/ColorTab の差分を削除
--- category: swing folder: ColorTab title: JTabbedPaneの選択文字色を変更 tags: [JTabbedPane, ChangeListener] author: aterai pubdate: 2004-02-09 description: JTabbedPaneで、選択されたタブの文字色を変更します。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTJo7nZnbI/AAAAAAAAAUs/6SU2JG2B0t0/s800/ColorTab.png --- * 概要 [#summary] `JTabbedPane`で、選択されたタブの文字色を変更します。 #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTJo7nZnbI/AAAAAAAAAUs/6SU2JG2B0t0/s800/ColorTab.png) * サンプルコード [#sourcecode] #code(link){{ tab.addChangeListener(new ChangeListener() { @Override 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); } } } }); }} * 解説 [#explanation] `JTabbedPane`に`ChangeListener`を追加し、条件によってタブの文字色を変更しています。 - タブ文字色: `JTabbedPane#setForegroundAt(Color)` -- `Look and Feel`に依存(`JDK 1.7.0`からドキュメントに追記された) -- `Synth(Nimbus)LookAndFeel`などでは、`JTabbedPane#setForegroundAt(Color)`で変更することができない -- `Synth(Nimbus)LookAndFeel`などでは、`JTabbedPane#setForegroundAt(Color)`メソッドは無効 -- [https://bugs.openjdk.java.net/browse/JDK-6939001 Bug ID: 6939001 Nimbus: JTabbedPane setBackgroundAt and setForegroundAt have no effect] - タブ背景色: `JTabbedPane#setBackgroundAt(Color)` -- `Look and Feel`に依存(`JDK 1.7.0`からドキュメントに追記された) -- `Windows XP`でタブの背景色を変更したい場合は、以下のように`System.setProperty("swing.noxp", "true")`とする必要がある #code{{ 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@"); //...... }} * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTabbedPane.html#setForegroundAt-int-java.awt.Color- JTabbedPane#setForegroundAt(Color) (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTabbedPane.html#setBackgroundAt-int-java.awt.Color- JTabbedPane#setBackgroundAt(Color) (Java Platform SE 8)] - [[JTabbedPaneのタブ文字列をハイライト>Swing/TabTitleHighlight]] * コメント [#comment] #comment #comment