有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