Я пишу простое приложение в java с помощью JxBrowser, но я застрял в самом начале. В моем коде есть unecorated stage
, что я хочу сделать его перетаскиваемым. Для этого, искал и нашел следующую ссылку:setOnMouseDragged не работает в режиме браузера
How to drag undecorated window
Так я поставил mousePressed
и MouseDragged
событие на stackPane
, но только mousePressed
событие увольняют и mouseDragged
событие никоим образом не увольняют. Любая идея, в чем проблема?
Заранее спасибо.
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
private static double xOffset = 0;
private static double yOffset = 0;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Platform.setImplicitExit(false);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
StackPane pane = new StackPane();
pane.getChildren().add(browserView);
Scene scene = new Scene(pane, 380, 500);
primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.setScene(scene);
pane.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("mouse pressed");
xOffset = primaryStage.getX() - event.getScreenX();
yOffset = primaryStage.getY() - event.getScreenY();
}
});
pane.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("mouse dragged");
primaryStage.setX(event.getScreenX() + xOffset);
primaryStage.setY(event.getScreenY() + yOffset);
}
});
primaryStage.show();
}
}
Просто догадайтесь: возможно, вы должны 'primaryStage.show();' перед тем, как присоединить слушателей событий. – Benvorth
К сожалению, не помогает :( –
, так как для jxbrowser требуется лицензия, которую я не могу проверить локально. Мое следующее предположение заключалось бы в том, чтобы добавить слушателей событий к панели или даже самому браузеру. – Benvorth