NimbusLookAndFeelでJComponentのサイズを変更する
Total: 3597
, Today: 2
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
NimbusLookAndFeel
を使用している場合、コンポーネントの表示サイズをクライアントプロパティ設定で変更可能です。
Screenshot
Advertisement
サンプルコード
JMenu menu = new JMenu("Resizing a Component");
ButtonGroup bg = new ButtonGroup();
Stream.of("regular", "mini", "small", "large")
.forEach(cmd -> menu.add(createSizeVariantItem(cmd, bg)));
// ...
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");
は、正常に動作しているように見える
- 初回の
- デフォルトは