有JavaFX的一個問題,即whenI彈出一個新的階段,新的窗口將焦點從任何Windows應用程序與當前焦點了JavaFx停止新窗口偷焦點
我希望它彈出到前面,而不是走專注,所以如果用戶輸入的其他地方,他們可以繼續輸入文字等
在Swing你能解決這個問題的:
dialog.setFocusable(false);
dialog.setVisible(true);
dialog.setFocusable(true);
似乎是JavaFX中沒有類似的選項。下面的例子,當你點擊按鈕時,它會彈出一個新的舞臺,注意焦點(注意,我不想要求焦點回來,因爲在真正的應用程序中,用戶可能正在寫電子郵件或在網頁上當彈出發生,它需要不採取焦點從這些活動)
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
public class Main extends Application {
private Stage stage;
@Override public void start(Stage stage) {
this.stage = stage;
stage.setTitle("Main Stage");
stage.setWidth(500);
stage.setHeight(500);
Button btnPopupStage = new Button("Click");
btnPopupStage.setOnMouseClicked(event -> popupStage());
Scene scene = new Scene(btnPopupStage);
stage.setScene(scene);
stage.show();
}
private void popupStage(){
Stage subStage = new Stage();
subStage.setTitle("Sub Stage");
subStage.setWidth(250);
subStage.setHeight(250);
subStage.initOwner(stage);
subStage.show();
System.out.println("Does main stage have focus : "+stage.isFocused());
System.out.println("Does popup have focus : "+subStage.isFocused());
}
public static void main(String[] args) {
launch(args);
}
}
任何想法階段不採取集中了stage.show()?謝謝
嗨,感謝您的答覆。 默認的Modality是NONE,所以我沒有設置它,並且設置它沒有區別。 我不確定我是否清楚該問題。我希望有一個新的舞臺出現,但我不希望重點關注它,我希望集中精力保持它的位置。 我沒有設置按鈕的大小,因爲它只是一個快速演示,使命令上的另一個階段彈出。 – user486415