概要

JDesktopPane内のJInternalFrameがカーソルキーを使用した移動で配置可能な領域をInsetsで設定します。

サンプルコード

JInternalFrame f = createInternalFrame();
Dimension d = ((BasicInternalFrameUI) f.getUI()).getNorthPane().getPreferredSize();
UIManager.put("Desktop.minOnScreenInsets", new Insets(d.height, 16, 3, 16));
UIManager.put("Desktop.background", Color.LIGHT_GRAY);
View in GitHub: Java, Kotlin

解説

上記のサンプルではUIManager.put("Desktop.minOnScreenInsets", Insets)JDesktopPane内のJInternalFrameがカーソルキーを使用した移動で配置可能な領域を設定しています。

  • Desktop.minOnScreenInsetsの設定はマウスによるJInternalFrameの移動には無効で、Ctrl+F7キーでJInternalFrameをカーソルキーによる移動モードにした場合のみ有効
    • Ctrl+F8でのカーソルキーによるリサイズモードでも有効だが拡大方向は無関係で、縮小方向はInputMapにキー入力が設定されていない
  • UIManager.put("Desktop.minOnScreenInsets", new Insets(d.height, 16, 3, 16))で内余白を設定
    • top: JInternalFrameのタイトルバーの高さを設定してJDesktopPaneの下辺からタイトルバーの高さ以上下にJInternalFrameを下カーソルキーで移動不可に設定
    • bottom: デフォルトの3pxを設定して上カーソルキーでJDesktopPaneの上辺からJInternalFrameの下辺の表示が3px以下にならないよう設定
    • left, right: 16pxを設定して左右カーソルキーでJDesktopPaneの左右辺からJInternalFrameの右左辺の表示が16px以下にならないよう設定

参考リンク

コメント