티스토리 뷰
들어가며
이번 시간에는 JavaFX 에서 popup 창을 띄우는 방법을 알아보겠습니다.
Pop up
- PopUp이라고 하면 Window 위에 window를 띄운다고 볼 수 있겠습니다.
- 용도로는 동적으로 입력을 받거나 메시지를 띄워줄때 등등 여러 상황에 쓰일수가 있겠습니다.\
- 저희는 Popup 클래스를 사용할 것입니다.
- 방법은 간단합니다. 우선 Button을 하나 만들어 보겠습니다.
sample.fxml
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
<Button text="POP UP" fx:id="popupBtn" onAction="#handlePopup"></Button>
</GridPane>
- onAction 이벤트 핸들러를 달아줍니다. 이제 Controller 에서 Popup을 만들어주면 되는데요.
- 예제코드
Conroller.java
public class Controller implements Initializable{
@FXML
Button popupBtn;
Popup popup;
TextArea textArea;
@Override
public void initialize(URL location, ResourceBundle resources) {
popup = new Popup();
textArea = new TextArea("이창은 팝업 창 입니다.");
}
public void handlePopup(ActionEvent event){
if(popup.isShowing()){
popup.hide();
}else {
final Window window = popupBtn.getScene().getWindow();
popup.setWidth(100);
popup.setHeight(300);
final double x = window.getX()
+ popupBtn.localToScene(0, 0).getX()
+ popupBtn.getScene().getX()
;
final double y = window.getY()
+ popupBtn.localToScene(0, 0).getY()
+ popupBtn.getScene().getY()
+ popupBtn.getHeight();
popup.getContent().clear();
popup.getContent().addAll(textArea);
popup.show(window, x, y);
}
}
}
- initialize 메소드에서 popup 객체를 생성해주고 TextArea를 생성해줍니다. ( 뭐든 상관없습니다. TextArea를 예시로 해보겠습니다. )
- 버튼이 눌렸을 때 handlePopup 에서 window 객체와 button의 좌표를 이용해서 popup을 띄울 위치를 구합니다.
- 위 계산에 따르면 버튼의 왼쪽 하단에 popup 창이 나타나게 됩니다.
- Main 같은 경우는 그냥 sample.fxml 을 띄워 주시면 됩니다.
Main.java
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
끝으로
이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > JavaFX' 카테고리의 다른 글
[JavaFX] Container 내의 요소에 Margin 속성 주는 방법 (0) | 2016.12.27 |
---|---|
[JavaFX] ComboBox 값 초기화 방법 및 사용법 (1) | 2016.12.26 |
[JavaFX] JavaFX 폰트 적용하는 법 (2) | 2016.12.15 |
[JavaFX] JavaFX CSS 파일 적용하는 방법 (0) | 2016.12.13 |
[JavaFX] JavaFX를 이용해 간단한 UI 만들어보기 (2) | 2016.12.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 자전거
- TableView
- 일본 여행
- effectivejava
- 배낭여행
- Java UI
- JavaFX Table View
- 자바
- 이펙티브자바
- 스프링부트
- JavaFX 테이블뷰
- 일본 배낭여행
- 이펙티브
- git
- springboot
- windows
- 일본여행
- 텐트
- 방통대 과제물
- intelij
- java
- 배낭 여행
- 인텔리제이
- 자전거 여행
- 이펙티브 자바
- effective java
- JavaFX Window Close
- JavaFX 종료
- 일본 자전거 여행
- JavaFX
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함