Swing/ComponentSizeVariant のバックアップの現在との差分(No.9)
- category: swing folder: ComponentSizeVariant title: NimbusLookAndFeelでJComponentのサイズを変更する tags: [NimbusLookAndFeel, JComponent, Font] author: aterai pubdate: 2014-07-28T00:18:57+09:00 description: NimbusLookAndFeelを使用している場合、コンポーネントの表示サイズをクライアントプロパティ設定で変更可能です。 image:
概要
NimbusLookAndFeel
を使用している場合、コンポーネントの表示サイズをクライアントプロパティ設定で変更可能です。
Screenshot
Advertisement
サンプルコード
#spanadd
JMenu menu = new JMenu("Resizing a Component");
#spanend
#spanadd
ButtonGroup bg = new ButtonGroup();
#spanend
#spanadd
Stream.of("regular", "mini", "small", "large")
#spanend
.forEach(cmd -> menu.add(createSizeVariantItem(cmd, bg)));
#spanadd
// ...
#spanend
booleanRenderer.putClientProperty("JComponent.sizeVariant", "mini");
View in GitHub: Java, Kotlin解説
NimbusLookAndFeel
を使用している場合JComponent#putClientProperty("JComponent.sizeVariant", "mini")
のようにクライアントプロパティを設定することでコンポーネントの表示サイズが変更可能- デフォルトは
regular
、その他は小さい順にmini
、small
、large
が設定可能 JComponent#updateUI()
を実行しないと更新されない- このサンプルでは
SwingUtilities.updateComponentTreeUI(window)
で実行
- このサンプルでは
- コンポーネントにフォントがユーザ指定されている場合は文字サイズは更新されない
- このサンプルでは
updateUI()
の前にフォントをc.setFont(new FontUIResource(c.getFont()))
でUIResource
化することで回避
- このサンプルでは
JTable
のBooleanRenderer
が二回目以降変更されない- 初回の
JCheckBox booleanRenderer = (JCheckBox) table.getDefaultRenderer(Boolean.class); booleanRenderer.putClientProperty("JComponent.sizeVariant", "mini");
は、正常に動作しているように見える
- 初回の
- デフォルトは