analog_clock/AnalogClockSvg/src/analogclocksvg/AnalogClockSvg.java @ a9dd6240
| dcb5e6b3 | TAKAHASHI, Toru | /*
|
||
* Copyright © 2014 TAKAHASHI,Toru
|
||||
*/
|
||||
package analogclocksvg;
|
||||
import javafx.application.Application;
|
||||
| 31775330 | TAKAHASHI, Toru | import javafx.application.Platform;
|
||
| dcb5e6b3 | TAKAHASHI, Toru | import javafx.fxml.FXMLLoader;
|
||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
| 31775330 | TAKAHASHI, Toru | import javafx.scene.control.ContextMenu;
|
||
import javafx.scene.control.MenuItem;
|
||||
import javafx.scene.input.MouseButton;
|
||||
| 5194b17a | TAKAHASHI, Toru | import javafx.scene.paint.Color;
|
||
| dcb5e6b3 | TAKAHASHI, Toru | import javafx.stage.Stage;
|
||
| 5194b17a | TAKAHASHI, Toru | import javafx.stage.StageStyle;
|
||
| dcb5e6b3 | TAKAHASHI, Toru | |||
/**
|
||||
*
|
||||
* @author TAKAHASHI,Toru
|
||||
*/
|
||||
public class AnalogClockSvg extends Application {
|
||||
| 5194b17a | TAKAHASHI, Toru | private double dragStartX;
|
||
private double dragStartY;
|
||||
| 31775330 | TAKAHASHI, Toru | private ContextMenu popup = new ContextMenu();
|
||
| 5194b17a | TAKAHASHI, Toru | |||
| dcb5e6b3 | TAKAHASHI, Toru | @Override
|
||
public void start(Stage stage) throws Exception {
|
||||
Parent root = FXMLLoader.load(getClass().getResource("AnalogClock.fxml"));
|
||||
| 5194b17a | TAKAHASHI, Toru | Scene scene = new Scene(root, 200, 200, Color.TRANSPARENT);
|
||
| 512a6aa9 | TAKAHASHI, Toru | // マウスのドラッグ操作でウィンドウを移動
|
||
| 5194b17a | TAKAHASHI, Toru | scene.setOnMousePressed(e -> {
|
||
dragStartX = e.getSceneX();
|
||||
dragStartY = e.getSceneY();
|
||||
});
|
||||
scene.setOnMouseDragged(e -> {
|
||||
stage.setX(e.getScreenX() - dragStartX);
|
||||
stage.setY(e.getScreenY() - dragStartY);
|
||||
});
|
||||
| 512a6aa9 | TAKAHASHI, Toru | // マウスのホイール操作でウィンドウサイズを変更
|
||
scene.setOnScroll(e -> {
|
||||
double scaleFactor = e.getDeltaY() > 0 ? 1.1 : 0.9;
|
||||
root.setScaleX(root.getScaleX() * scaleFactor);
|
||||
root.setScaleY(root.getScaleY() * scaleFactor);
|
||||
});
|
||||
// 右クリックでポップアップメニュー
|
||||
| 31775330 | TAKAHASHI, Toru | MenuItem exitItem = new MenuItem("exit");
|
||
exitItem.setOnAction(e -> Platform.exit());
|
||||
popup.getItems().add(exitItem);
|
||||
scene.setOnMouseClicked(e -> {
|
||||
if (e.getButton() == MouseButton.SECONDARY) {
|
||||
popup.show(stage, e.getScreenX(), e.getScreenY());
|
||||
}
|
||||
});
|
||||
| 5194b17a | TAKAHASHI, Toru | stage.initStyle(StageStyle.TRANSPARENT);
|
||
| dcb5e6b3 | TAKAHASHI, Toru | stage.setScene(scene);
|
||
stage.show();
|
||||
}
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
launch(args);
|
||||
}
|
||||
}
|