• category: swing folder: DesktopMinOnScreenInsets title: JDesktopPane内のJInternalFrameがカーソルキーで移動可能な範囲を変更する tags: [JDesktopPane, JInternalFrame, UIManager] author: aterai pubdate: 2021-11-15T01:28:42+09:00 description: JDesktopPane内のJInternalFrameがカーソルキーを使用した移動で配置可能な領域をInsetsで設定します。 image: https://drive.google.com/uc?id=1utMxkJ4Bce477CzPmQgWLM4pMjdCkA3j

概要

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以下にならないよう設定

参考リンク

コメント