Swing/DesktopPaneDragMode のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DesktopPaneDragMode へ行く。
- 1 (2020-10-05 (月) 01:14:04)
- 2 (2022-06-24 (金) 18:23:40)
- category: swing folder: DesktopPaneDragMode title: JDesktopPaneに適用するドラッグスタイルを変更する tags: [JDesktopPane, JInternalFrame] author: aterai pubdate: 2020-10-05T01:11:41+09:00 description: JDesktopPaneのドラッグスタイルを継続的描画モードとアウトライン描画モードで切り替えます。 image: https://drive.google.com/uc?id=1PMtf908TaQMVs_TVQ9xci89wlx7f7dda
概要
JDesktopPane
のドラッグスタイルを継続的描画モードとアウトライン描画モードで切り替えます。
Screenshot
Advertisement
サンプルコード
JDesktopPane desktop = new JDesktopPane();
// @see javax/swing/DefaultDesktopManager.java setupDragMode(...)
// desktop.putClientProperty("JDesktopPane.dragMode", "faster");
// desktop.putClientProperty("JDesktopPane.dragMode", "outline");
JRadioButton r1 = new JRadioButton("LIVE_DRAG_MODE", true);
r1.addItemListener(e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
desktop.setDragMode(JDesktopPane.LIVE_DRAG_MODE);
}
});
JRadioButton r2 = new JRadioButton("OUTLINE_DRAG_MODE");
r2.addItemListener(e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
}
});
View in GitHub: Java, Kotlin解説
LIVE_DRAG_MODE
JInternalFrame
の移動、リサイズを継続的に描画するMetalLookAndFeel
、WindowsLookAdnFeel
、NimbusLookAndFeel
などのデフォルト
OUTLINE_DRAG_MODE
JInternalFrame
の移動、リサイズをアウトラインのみ描画するMotifLookAndFeel
はこのOUTLINE_DRAG_MODE
のみが有効で、LIVE_DRAG_MODE
を設定しても無効
JDesktopPane#putClientProperty("JDesktopPane.dragMode", "outline")
などでドラッグスタイルを変更する方法もあるJDesktopPane
の親Window
が透明の場合はDEFAULT_DRAG_MODE
でJDesktopPane#getClientProperty("JDesktopPane.dragMode")
の値は無効JDesktopPane#getClientProperty("JDesktopPane.dragMode")
がoutline
の場合はOUTLINE_DRAG_MODE
JDesktopPane#getClientProperty("JDesktopPane.dragMode")
がfaster
の場合はFASTER_DRAG_MODE
- リサイズの場合
DEFAULT_DRAG_MODE
とFASTER_DRAG_MODE
の処理は同一 - ドラッグの場合
FASTER_DRAG_MODE
はJDesktopPane
の親Window
が透明なので再描画範囲を限定して高速化
- リサイズの場合
JDesktopPane#getClientProperty("JDesktopPane.dragMode")
がその他のnull
などの場合はJDesktopPane#getDragMode()
に従う
参考リンク
- How to Use Internal Frames (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
- JDesktopPane#setDragMode(...) (Java Platform SE 8)