プロジェクト

全般

プロフィール

« | » 

リビジョン f9413c1c

toru さんがほぼ11年前に追加

タッチパネル操作時にドラッグで移動、ピンチ・ズーム操作で大きさ変更するようにイベント処理を調整、追加した。

差分を表示:

AnalogClockSvg/src/analogclocksvg/AnalogClockSvg.java
private double dragStartX;
private double dragStartY;
private boolean isScrollStarted;
private ContextMenu popup = new ContextMenu();
private Parent root;
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("AnalogClock.fxml"));
root = FXMLLoader.load(getClass().getResource("AnalogClock.fxml"));
Scene scene = new Scene(root, 200, 200, Color.TRANSPARENT);
// マウスのドラッグ操作でウィンドウを移動
scene.setOnMousePressed(e -> {
......
stage.setX(e.getScreenX() - dragStartX);
stage.setY(e.getScreenY() - dragStartY);
});
// 時計のサイズを変更する
// マウスのホイール操作でウィンドウサイズを変更
scene.setOnScrollStarted(e -> isScrollStarted = true);
scene.setOnScrollFinished(e ->isScrollStarted = false);
scene.setOnScroll(e -> {
double scaleFactor = e.getDeltaY() > 0 ? 1.1 : 0.9;
root.setScaleX(root.getScaleX() * scaleFactor);
root.setScaleY(root.getScaleY() * scaleFactor);
if (isScrollStarted) return;
double zoomFactor = e.getDeltaY() > 0 ? 1.1 : 0.9;
zoom(zoomFactor);
});
// タッチパネルのピンチ操作でウィンドウサイズを変更
scene.setOnZoom(e -> {
zoom(e.getZoomFactor());
});
// 右クリックでポップアップメニュー
MenuItem exitItem = new MenuItem("exit");
......
stage.show();
}
private void zoom(double factor) {
root.setScaleX(root.getScaleX() * factor);
root.setScaleY(root.getScaleY() * factor);
}
/**
* @param args the command line arguments
*/

他の形式にエクスポート: Unified diff