JDesktopPane内のJInternalFrameがカーソルキーで移動可能な範囲を変更する
Total: 937
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JDesktopPane
内のJInternalFrame
がカーソルキーを使用した移動で配置可能な領域をInsets
で設定します。
Screenshot
Advertisement
サンプルコード
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
にキー入力が設定されていない
- 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
以下にならないよう設定