Swing/UIDefaultsOverrides のバックアップの現在との差分(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - 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)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:Nimbusの外観をUIDefaultsで変更する #navi(../) #tags(NimbusLookAndFeel, UIDefaults, Painter) RIGHT:Posted by &author(aterai); at 2013-05-27 * Nimbusの外観をUIDefaultsで変更する [#a6384418] --- category: swing folder: UIDefaultsOverrides title: Nimbusの外観をUIDefaultsで変更する tags: [NimbusLookAndFeel, UIDefaults, Painter] author: aterai pubdate: 2013-05-27T01:49:34+09:00 description: NimbusLookAndFeelの外観をUIDefaultsを使って部分的に変更します。 image: https://lh4.googleusercontent.com/-iuOm0KmZLK4/UaIp6IGdL4I/AAAAAAAABso/TUvbvWNNQuI/s800/UIDefaultsOverrides.png --- * 概要 [#summary] `NimbusLookAndFeel`の外観を`UIDefaults`を使って部分的に変更します。 #download #ref(https://lh4.googleusercontent.com/-iuOm0KmZLK4/UaIp6IGdL4I/AAAAAAAABso/TUvbvWNNQuI/s800/UIDefaultsOverrides.png) #download(https://lh4.googleusercontent.com/-iuOm0KmZLK4/UaIp6IGdL4I/AAAAAAAABso/TUvbvWNNQuI/s800/UIDefaultsOverrides.png) ** サンプルコード [#a62f5e3a] * サンプルコード [#sourcecode] #code(link){{ UIDefaults d = new UIDefaults(); d.put("TextArea.borderPainter", new Painter() { @Override public void paint(Graphics2D g, Object o, int w, int h) {} d.put("TextArea.borderPainter", new Painter<JComponent>() { @Override public void paint(Graphics2D g, JComponent c, int w, int h) { /* Empty painter */ } }); MultiLineTableCellRenderer r = new MultiLineTableCellRenderer(); r.putClientProperty("Nimbus.Overrides", d); r.putClientProperty("Nimbus.Overrides.InheritDefaults", false); }} ** 解説 [#jeead6dc] * 解説 [#explanation] - `JCheckBoxMenuItem` -- `CheckBoxMenuItem[Enabled].checkIconPainter`, `CheckBoxMenuItem[MouseOver].checkIconPainter`, `CheckBoxMenuItem[Enabled+Selected].checkIconPainter`, `CheckBoxMenuItem[MouseOver+Selected].checkIconPainter`の`Painter`(これらの状態を独自に描画)を置き換えた`UIDefaults`を作成し、`putClientProperty("Nimbus.Overrides", d);`を使って上書き -- `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のセルの高さを自動調整>Swing/AutoWrapTableCell]]) -- `NimbusLookAndFeel`では、`JScrollPane`内にない`JTextArea`には`Border`が表示されるので、これを非表示にするために`TextArea.borderPainter`で使用する`Painter`を置き換えた`UIDefaults`を作成し、`JTextArea`のデフォルトを`putClientProperty("Nimbus.Overrides", d);`を使って上書き --- `UIManager.getBorder("Table.focusCellHighlightBorder")`を使うと、なぜか一番左上のセルのフォーカスが表示されない -- `JTable`の`TableCellRenderer`に`JTextArea`を使用してセル内に複数行の文字列を表示 --- 参考: [[JTableのセルの高さを自動調整>Swing/AutoWrapTableCell]] -- `NimbusLookAndFeel`では`JTextArea`が`JScrollPane`内に配置されていない場合`Border`が表示されるので、これを非表示にするために`TextArea.borderPainter`で使用する`Painter`を置き換えた`UIDefaults`を作成し、`JTextArea`のデフォルトを`putClientProperty("Nimbus.Overrides", d)`を使って上書き --- `UIManager.getBorder("Table.focusCellHighlightBorder")`を使うとなぜか一番左上のセルのフォーカスが表示されない -- `TextArea.NotInScrollPane`の`State#isInState(...)`をオーバーライドして`JScrollPane`内にあるように見せかける方法もある #code{{ d.put("TextArea.NotInScrollPane", new State("NotInScrollPane") { @Override protected boolean isInState(JComponent c) { //@see javax.swing.plaf.nimbus.TextAreaNotInScrollPaneState //return !(c.getParent() instanceof JViewport); // @see javax.swing.plaf.nimbus.TextAreaNotInScrollPaneState // return !(c.getParent() instanceof JViewport); return false; } }); r.putClientProperty("Nimbus.Overrides", d); }} ** 参考リンク [#e67de264] - [http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html Nimbus Defaults (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)] * 参考リンク [#reference] - [https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html Nimbus Defaults (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)] -- `NimbusLookAndFeel`のプロパティ一覧 - [http://docs.oracle.com/javase/jp/7/api/javax/swing/plaf/nimbus/package-summary.html javax.swing.plaf.nimbus (Java Platform SE 7 )] -- [http://docs.oracle.com/javase/jp/7/api/javax/swing/plaf/nimbus/NimbusStyle.html NimbusStyle (Java Platform SE 7 )] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/nimbus/package-summary.html javax.swing.plaf.nimbus (Java Platform SE 8)] -- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/nimbus/NimbusStyle.html NimbusStyle (Java Platform SE 8)] ** コメント [#ec9b9cab] * コメント [#comment] #comment #comment