Swing/DesktopPaneDragMode のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DesktopPaneDragMode へ行く。
- 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_MODEJInternalFrameの移動、リサイズを継続的に描画するMetalLookAndFeel、WindowsLookAdnFeel、NimbusLookAndFeelなどのデフォルト
OUTLINE_DRAG_MODEJInternalFrameの移動、リサイズをアウトラインのみ描画するMotifLookAndFeelはこのOUTLINE_DRAG_MODEのみで、LIVE_DRAG_MODEを設定しても無効
JDesktopPane#putClientProperty("JDesktopPane.dragMode", "outline")などでドラッグスタイルを変更する方法もあるJDesktopPaneの親Windowが透明の場合はDEFAULT_DRAG_MODEJDesktopPane#getClientProperty("JDesktopPane.dragMode")がoutlineの場合はOUTLINE_DRAG_MODEJDesktopPane#getClientProperty("JDesktopPane.dragMode")がfasterの場合はFASTER_DRAG_MODEJDesktopPane#getClientProperty("JDesktopPane.dragMode")がその他のnullなどの場合はJDesktopPane#getDragMode()に従う- リサイズの場合
DEFAULT_DRAG_MODEとFASTER_DRAG_MODEの処理は同一 - ドラッグの場合
FASTER_DRAG_MODEはJDesktopPaneの親Windowが透明なので再描画範囲を限定して高速化
参考リンク
- How to Use Internal Frames (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
- JDesktopPane#setDragMode(...) (Java Platform SE 8)