概要

パレット化したJInternalFrameJDesktopPaneのパレットレイヤーに追加します。

サンプルコード

JInternalFrame palette = new JInternalFrame(
    "Palette", true, false, true, true);
palette.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
palette.setBounds(0, 0, 120, 120);
palette.setMinimumSize(new Dimension(50, 50));
palette.add(new JScrollPane(new JTree()));
palette.setVisible(true);
desktop.add(palette, JDesktopPane.PALETTE_LAYER);
View in GitHub: Java, Kotlin

解説

  • JInternalFrame#putClientProperty("JInternalFrame.isPalette", Boolean.TRUE)でパレット化
    • MetalLookAndFeelでのみ有効
  • JDesktopPane#add(palette, JDesktopPane.PALETTE_LAYER)でパレットレイヤーに追加
    • パレットレイヤーはデフォルトレイヤー(JDesktopPane.DEFAULT_LAYER)の一つ上のレイヤーで常にその下のレイヤーに配置れさたコンポーネントより上に表示される
  • パレット化したJInternalFrameはデフォルトのマウス操作でアイコン化が不可になる
    • JInternalFrame#setIcon(boolean)メソッドを使用すればアイコン化可能
    • 最大化はパレットのタイトルバーをダブルクリック、クローズはタイトルバー右端のボタンをクリックで可能

参考リンク

コメント