2012-04-18 39 views
24

Tôi đang tạo một ứng dụng trong JavaFX 2.0. Từ cửa sổ chính của tôi, tôi bắt đầu một cửa sổ mới với một số cài đặt. Sau khi tôi đã hoàn tất việc điều chỉnh cài đặt, tôi muốn nhấn một nút như "Lưu thay đổi".JavaFX 2.0: Đóng một giai đoạn (cửa sổ)

Tôi muốn nút này lưu các thay đổi và đóng cửa sổ. Bằng cách đóng, tôi có nghĩa là giết chết nó, không đặt nó trong nền hoặc thiết lập khả năng hiển thị. Tôi đã đọc về một phương pháp Stage.close()

http://docs.oracle.com/javafx/2.0/api/javafx/stage/Stage.html

Như bạn có thể thấy nó tương tự như phương pháp Hide(), mà chỉ có thể giấu cửa sổ, không đóng cửa nó.

Q: Bất kỳ ai biết bất kỳ phương pháp nào hoặc có một số mã giúp tôi đóng cửa sổ?

Tất cả trợ giúp sẽ được đánh giá cao. Cảm ơn!

+0

http://stackoverflow.com/questions/13567019/close-fxml-window-by-code-javafx –

Trả lời

41

Các tài liệu bạn bang liên kết mà stage.close():

Đóng Giai đoạn này. Cuộc gọi này tương đương với hide().

Như hide() tương đương với close()close() đóng sân khấu, sau đó hide() cũng đóng sân khấu.

Khi tất cả các giai đoạn trong một ứng dụng bị ẩn (hoặc đóng nếu bạn thích, vì nó giống như vậy), ứng dụng sẽ thoát. Khó hiểu, tôi biết, nhưng đó chỉ là cách nhóm JavaFX quyết định đặt tên và thực hiện các hành động.

Nếu muốn, phương pháp Platform.setImplicitExit(boolean) có thể được sử dụng để tắt hành vi mặc định thoát khỏi ứng dụng khi cửa sổ cuối cùng bị đóng hoặc ẩn.

+0

Cám ơn giải thích , nó thực sự đã giúp tôi hiểu! :) – haakonlu

+0

Tôi tự hỏi nếu Window.hide() cũng tương đương với Stage.hide() và do đó Stage.close() nếu một cửa sổ là cửa sổ duy nhất của giai đoạn? Vì vậy, tôi sẽ không cần phải vượt qua một tham chiếu đến sân khấu. –

+0

Tôi không hiểu ý kiến ​​bình luận của bạn. Thay vào đó, bạn có thể muốn tạo một câu hỏi mới. – jewelsea

15

này đã làm việc một cách hoàn hảo đối với tôi (với nhập khẩu đối với Node):

((Node)(event.getSource())).getScene().getWindow().hide(); 
+0

Tôi đang cố gắng để ẩn cửa sổ từ menuitem ActionEvent nhưng nhận được ngoại lệ "menuitem không thể được đúc thành Node". Dưới đây là ngoại lệ 'Gây ra bởi: java.lang.ClassCastException: javafx.scene.control.MenuItem không thể truyền sang javafx.scene.Node' –

Các vấn đề liên quan