概要

NimbusLookAndFeelを使用している場合、コンポーネントの表示サイズをクライアントプロパティ設定で変更可能です。

サンプルコード

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、その他は小さい順にminismalllargeが設定可能
    • JComponent#updateUI()を実行しないと更新されない
      • このサンプルではSwingUtilities.updateComponentTreeUI(window)で実行
    • コンポーネントにフォントがユーザ指定されている場合は文字サイズは更新されない
      • このサンプルではupdateUI()の前にフォントをc.setFont(new FontUIResource(c.getFont()))UIResource化することで回避
    • JTableBooleanRendererが二回目以降変更されない
      • 初回のJCheckBox booleanRenderer = (JCheckBox) table.getDefaultRenderer(Boolean.class); booleanRenderer.putClientProperty("JComponent.sizeVariant", "mini");は、正常に動作しているように見える

参考リンク

コメント