JDesktopPane内のJInternalFrameがカーソルキーで移動可能な範囲を変更する
Total: 1345, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JDesktopPane内のJInternalFrameがカーソルキーを使用した移動で配置可能な領域をInsetsで設定します。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
上記のサンプルではUIManager.put("Desktop.minOnScreenInsets", Insets)でJDesktopPane内のJInternalFrameがカーソルキーを使用した移動で配置可能な領域を設定しています。
Desktop.minOnScreenInsetsの設定はマウスによるJInternalFrameの移動には無効で、Ctrl+F7キーでJInternalFrameをカーソルキーによる移動モードにした場合のみ有効- Ctrl+F8でのカーソルキーによるリサイズモードでも有効だが拡大方向は無関係で、縮小方向は
InputMapにキー入力が設定されていない
- Ctrl+F8でのカーソルキーによるリサイズモードでも有効だが拡大方向は無関係で、縮小方向は
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以下にならないよう設定