1. 程式人生 > >JavaFx--實現響應滑鼠事件拖動窗體

JavaFx--實現響應滑鼠事件拖動窗體

public class DragWindowHandler implements EventHandler<MouseEvent> {

        private Stage primaryStage;        //primaryStage為start方法頭中的Stage
        private double oldStageX;
        private double oldStageY;
        private double oldScreenX;
        private double oldScreenY;

        public DragWindowHandler(Stage primaryStage) {        //構造器
            this.primaryStage = primaryStage;
        }

        @Override
        public void handle(MouseEvent e) {
            if (e.getEventType() == MouseEvent.MOUSE_PRESSED) {    //滑鼠按下的事件    
                this.oldStageX = this.primaryStage.getX();
                this.oldStageY = this.primaryStage.getY();
                this.oldScreenX = e.getScreenX();
                this.oldScreenY = e.getScreenY();

            } else if (e.getEventType() == MouseEvent.MOUSE_DRAGGED) {  //滑鼠拖動的事件
                this.primaryStage.setX(e.getScreenX() - this.oldScreenX + this.oldStageX);
                this.primaryStage.setY(e.getScreenY() - this.oldScreenY + this.oldStageY);
            }
        }
    }
EventHandler handler = new DragWindowHandler(this.primaryStage);        //primaryStage為start方法中的區域性b
this.setOnMousePressed(handler);    //如果去掉這一行程式碼將會使滑鼠進入面板時面板左上角會定位到滑鼠的位置
this.setOnMouseDragged(handler);

相關推薦

JavaFx--實現響應滑鼠事件窗體

public class DragWindowHandler implements EventHandler<MouseEvent> { private Stage primaryStage;        //primaryStage為star

用OnMouseMove()訊息可以實現滑鼠功能

afx_msg void OnMouseMove(   UINT nFlags point   );   當滑鼠移動時呼叫此函式 。   引數:   nFlags   指示各種虛擬按鍵是否按下 ,此引數可以是任何下列值的組合:   MK_CONTROL 當CT

java swing設定窗體無邊框後滑鼠還能窗體的方法

import java.awt.EventQueue; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.

C#如何實現控制元件移動

1 //在picturebox滑鼠移動 2 private void picBox_MouseMove(object sender, MouseEventArgs e) 3 { 4 if (MoveFlag) 5 { 6 picBox.Left += Convert.To

ActionScript 3.0對文字實現Tween類特效處理

先說明一下Tween類: 我們看一下Tween類的建構函式: Tween(obj:Object, prop:String, func:Function, begin:Number,finish:Number, duration:Number, useSeconds:Bool

QT隨意窗體位置

實現窗體拖動 如果我們不使用作業系統自帶的標題欄,首先就應該將Windows標題欄去掉,這個功能只要一條語句就能夠實現,那就是在建構函式中加入setWindowsFlags(Qt::FramelessHint),但是窗體就固定不動了,既不能拖動也不能拉伸,下面我就介紹一種方法來實現窗體

Android 簡單實現可全屏,可點選的View

首先,我們都知道,拖動一個view,需要給它設定touchListener,或者重寫他的touchEvent。我們以ImageView為例,自定義一個DragView,繼承ImageView。 單純的只是想讓view拖動,我們只需要在ACTION_DOWN

table實現列寬的效果

部門有一個專案介面用的html,所有的列表都用的原生table控制元件,一個同事找到我問有沒有辦法實現table的列寬拖動,好幾年沒摸過前臺了,還真給問住了,經過網上查詢資料等,最終解決,記錄下: <!DOCTYPE html> &l

NGUI之響應滑鼠事件(劃過、停留、點選等)

一、不管什麼響應,必須要新增碰撞器(要注意的是NGUI要用自己的方法來新增碰撞器) 二、給需要響應的遊戲物件或者預設物體新增兩個指令碼UIEventListener 和UIEventOver,如圖 三、假設現在要響應滑鼠停留在物體和移走物體時候的兩種訊息 給物件新增指令碼

MFC 中實現在客戶區視窗的方法總結

VC++實現無標題欄對話方塊的拖動 其實說白了就是欺騙,欺騙誰了?呵呵,當然是欺騙windows,本來是移動標題欄可以拖動窗體,那麼我們現在是拖動客戶區來移動,當我們拖動標題欄的時候windows產生一個WM_NCHITTEST訊息,這個訊息確定滑鼠點選的哪個位置,這個訊息

Pyqt實現無邊框視窗及改變視窗大小

做個記錄,繪製邊框陰影可以忽略這裡不是主要 根據網上某位仁兄Qt的實現轉過來的,上完整程式碼 # coding:utf-8 from PyQt4.Qt import * import sys PADDING=4 sys.setrecursionlimit(10000)

DIV+CSS實現區域滑鼠事件的動態效果

現在WEB2.0時代來了,你可以在很多網站上看到一種滑鼠移動上去表格會有狀態的效果,今天偶就給大家講一下具體的做法,可能我這個方法不太好,還請大家多多指點。 其實方法就是在DIV裡面加入了 OnMouseOver(滑鼠移動到上面) OnMouseOut(滑鼠移開) OnMo

JAVA作業 視窗響應滑鼠事件滑鼠在畫布上畫圓

題目:生成一個視窗響應滑鼠事件,可以拖住滑鼠在畫布上畫出藍色的圓。滑鼠按下和彈起的位置為圓的直徑。 思想: 1、編寫框架類與畫布類即可實現畫板系列問題; 2、編寫Circle類,用於描述圓物件,因

Vue.js實現圖片的隨意

主要程式碼如下: <template> <div id="test_3"> <img src="../assets/img/photo.jpg

實現GridView長按圖示,其餘圖示自動移位的效果(仿webos的note風格)

參考文章 :高仿小米launcher(ZAKER)跨屏拖動item 上述文章是在放在item後,2個位置做一個交換,本文在此基礎上,實現了拖動過程中,其它item自動移位的效果。其實就是修改了一下OnMove動作中的執行動畫過程以及資料重新整理的邏輯,主要還是得益於上述文章

Qt---實現一組可按鈕

直接上程式碼 self-contained.h #ifndef SELFCONTAINED_H #define SELFCONTAINED_H #include <QWidget> #include <QPainter> #

surfaceView實現圖片縮放功能

還是老闆牛,多向他學習請教。之前折騰了好一會兒的問題,被老闆一上午搞定。 問題:採用surface來實現多點觸控縮放,拖動顯示功能。 附上初稿程式碼,明天再好好整理下, public class MySurfaceView3 extends SurfaceView impl

pyqt實現自定義視窗大小,到桌面邊框自動影藏

#-*- coding:utf-8 -*- from PyQt4.QtGui import * from PyQt4.QtCore import * import sys from ctypes import * from time import sleep impor

C#禁止關閉和窗體【有漏洞】

*我也是抄別人的,禁止關閉沒什麼問題,當然只要別在程序管理器裡關就行。呵呵 禁止拖動有問題,就是用標題欄左邊的圖示選單,是可以拖動窗體的。 【解決辦法應該是,用this.position來解決吧】 private const int SC_CLOSE =

在WPF中的Canvas上實現控制元件的、縮放

   如題,專案中需要實現使用滑鼠拖動、縮放一個矩形框,WPF中沒有現成的,那就自己造一個輪子:)    造輪子前先看看Windows自帶的畫圖工具中是怎樣做的,如下圖:      在被拖動的矩形框四周有9個小框,可以從不同方向拖動來放大縮小矩形框,另外需要注意的是,還有一