창에 팝업 대화 상자가 표시되어 다른 구성 요소의 맨 위에 나타납니다. 이제 프로그램의 다른 모든 구성 요소에 액세스하지 못하게하고 싶습니다. 그것을하는 방법?팝업 창에서 양식 사용 javafx
2
A
답변
2
popup API에는 원하는대로 정확히 initModality(Modality.APPLICATION_MODAL);
메서드가 없습니다. 이 경우 팝업 창을 스테이지로 만들고 위에서 언급 한 방법을 사용할 수 있습니다. 이 솔루션 @Xsleek
입니다
1
, 예제 코드 : -
package popupexample;
import java.text.SimpleDateFormat;
import java.util.Date;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBoxBuilder;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;
/**
*
* @author reegan
*/
public class PopUpExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
popupErrorMsg();
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
public void popupErrorMsg() {
final Stage myDialog = new Stage();
myDialog.initModality(Modality.APPLICATION_MODAL);
Button okButton = new Button("Ok");
okButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
myDialog.close();
}
});
Date todayDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Scene myDialogScene = new Scene(VBoxBuilder.create()
.children(new Text("Please Enter Validate Date \n \t "+ dateFormat.format(todayDate)), okButton)
.spacing(30)
.alignment(Pos.CENTER)
.padding(new Insets(10))
.build());
myDialog.setScene(myDialogScene);
myDialog.show();
}
}
나는 또한이 같은 문제 ... 이 시도 http://stackoverflow.com/questions/19953306/lock-parent-controller- till-child-controller-not-close –
그게 좋은 질문입니다. 나는 모든 주어진 답을 안다. 하지만 그것은 팝업 클래스의 주요 실수로 보인다. 당신이 그것의 양식을 설정할 수 없다면, 팝업은 무엇입니까? 간단한 모달 입력을위한 새로운 "무대"를 만들고 싶지 않습니다. 나는 자바를 좋아한다. 그러나 이것은 이상합니다 ... – Sauer