JavaFX
[JavaFX] 윈도우 로그인 화면 제목 타이틀바 없애고 화면 이동 드래그 하기
오탄자
2020. 7. 13. 20:45
JavaFX 로그인 화면
- 윈도우 타이틀바를 없애고 로그인 화면만 보여준다.
- 로그인 화면 창을 드래그로 화면이동 한다.
메인 화면에서 login.fxml 화면을 호출한다.
이 때 StageStyle을 UNDECORATED 로 스테이지의 타이틀바, 확대, 축소, 닫기 버튼이 없는 화면으로 띄운다.
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try{
Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
primaryStage.initStyle(StageStyle.UNDECORATED);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e){
}
}
public static void main(String[] args) {
lunch(args);
}
}
login.fxml 파일의 최상단 AnchorPane 의 fx:id 를 wrap로 변수명을 지정한다.
<AnchorPane fx:id = "wrap" fx:controller="LoginController>
</AnchorPane>
LoginController 에서 stageMove 함수로 화면이동을 설정한다.
public class LoginController implements Initializable{
@FXML private AnchorPane wrap;
private double x = 0;
private double y = 0;
@Override
public void initialize(URL location, ResourceBundle resources) {
stageMove();
}
/* 로그인 화면 이동 */
private void stageMove(){
wrap.setOnMousePressed((event) -> {
x = event.getSceneX();
y = event.getSceneY();
});
wrap.setOnMouseDragged((event) -> {
stage = (Stage) wrap.getScene().getWindow();
stage.setX(event.getScreenx() - x);
stage.setY(event.getScreenY() - y);
});
wrap.setOnMouseReleased((event) -> {
stage = (Stage) wrap.getScene().getWindow();
});
}
}