Swing/UIDefaultsOverrides のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/UIDefaultsOverrides へ行く。
- 1 (2013-05-27 (月) 01:49:34)
- 2 (2013-05-28 (火) 03:31:30)
- 3 (2013-05-28 (火) 20:34:44)
- 4 (2014-05-22 (木) 14:34:55)
- 5 (2014-06-24 (火) 20:34:32)
- 6 (2014-11-08 (土) 01:17:29)
- 7 (2015-12-08 (火) 16:09:59)
- 8 (2016-06-24 (金) 16:34:05)
- 9 (2016-08-12 (金) 17:22:35)
- 10 (2017-04-04 (火) 14:13:45)
- 11 (2017-04-04 (火) 14:17:08)
- 12 (2017-10-04 (水) 18:25:48)
- 13 (2019-04-05 (金) 16:02:29)
- 14 (2020-07-02 (木) 04:21:55)
- 15 (2021-12-04 (土) 09:27:01)
- 16 (2025-01-03 (金) 08:57:02)
- 17 (2025-01-03 (金) 09:01:23)
- 18 (2025-01-03 (金) 09:02:38)
- 19 (2025-01-03 (金) 09:03:21)
- 20 (2025-01-03 (金) 09:04:02)
- 21 (2025-06-19 (木) 12:41:37)
- 22 (2025-06-19 (木) 12:43:47)
TITLE:Nimbusの外観をUIDefaultsで変更する
Posted by aterai at 2013-05-27
Nimbusの外観をUIDefaultsで変更する
`NimbusLookAndFeel
の外観を
UIDefaults
`を使って部分的に変更します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
UIDefaults d = new UIDefaults();
d.put("TextArea.borderPainter", new Painter() {
@Override public void paint(Graphics2D g, Object o, int w, int h) {}
});
MultiLineTableCellRenderer r = new MultiLineTableCellRenderer();
r.putClientProperty("Nimbus.Overrides", d);
r.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
View in GitHub: Java, Kotlin解説
- `
JCheckBoxMenuItem
`- `
CheckBoxMenuItem[Enabled].checkIconPainter
,
CheckBoxMenuItem[MouseOver].checkIconPainter
,
CheckBoxMenuItem[Enabled+Selected].checkIconPainter
,
CheckBoxMenuItem[MouseOver+Selected].checkIconPainter
の
Painter
(これらの状態を独自に描画)を置き換えた
UIDefaults
を作成し、
putClientProperty("Nimbus.Overrides", d);
`を使って上書き
- `
- `
JTextArea
`- `
JTable
の
TableCellRenderer
に
JTextArea
`を使用してセル内に複数行の文字列を表示(JTableのセルの高さを自動調整) - `
NimbusLookAndFeel
では、
JScrollPane
内にない
JTextArea
には
Border
が表示されるので、これを非表示にするために
TextArea.borderPainter
で使用する
Painter
を置き換えた
UIDefaults
を作成し、
JTextArea
のデフォルトを
putClientProperty("Nimbus.Overrides", d);
`を使って上書き- `
UIManager.getBorder("Table.focusCellHighlightBorder")
`を使うと、なぜか一番左上のセルのフォーカスが表示されない
- `
- `
TextArea.NotInScrollPane
の
State#isInState(...)
をオーバーライドして
JScrollPane
`内にあるように見せかける方法もある
- `
d.put("TextArea.NotInScrollPane", new State("NotInScrollPane") {
@Override protected boolean isInState(JComponent c) {
//@see javax.swing.plaf.nimbus.TextAreaNotInScrollPaneState
//return !(c.getParent() instanceof JViewport);
return false;
}
});
r.putClientProperty("Nimbus.Overrides", d);
参考リンク
- Nimbus Defaults (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)
- `
NimbusLookAndFeel
`のプロパティ一覧
- `
- javax.swing.plaf.nimbus (Java Platform SE 7 )