Javafx的新功能。在我的主阶段控制器类中,我试图执行以下操作时遇到了问题:单击按钮后,启动延迟,然后打开一个新阶段。
在按钮动作事件中以及在我用于延迟的Scheduler的run()部分中加载FXML文件时出现问题。 我不能在run()中抛出异常,因为它与自身发生冲突?
通过以下操作,我也无法在“父根”中捕获它:
Parent root = null;
try {
root = FXMLLoader.load(getClass().getResource("Popup.fxml"));
} catch (IOException e) {
e.printStackTrace();
}
因为它只能运行了。我认为我无法很好地解决这个问题,或者完全是错误的方法。
我似乎无法使它正常工作。只需按一下按钮,该阶段就可以正常运行,但是我需要延迟。
控制器类代码:
public class Controller implements Initializable {
public static int seconds;
public static boolean yes = false;
public String strtime = String.format("Current Date/Time : %tc", new Date());
@FXML
Button remind;
@FXML
Label secondsuntil,date;
@FXML
TextField Day, Minute, remindname;
@FXML
private Button Butt;
static String Nameoftask;
int days, minutes;
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
date.setText(strtime);
}
@FXML
private void handleButtonAction(ActionEvent actionEvent) throws IOException {
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
ScheduledFuture<?> countdown = scheduler.schedule(new Runnable() {
@Override
public void run(){
Stage primaryStage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("Popup.fxml"));
primaryStage.setTitle(Nameoftask);
primaryStage.initModality(Modality.NONE);
primaryStage.setScene(new Scene(root, 200,50));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
primaryStage.setX(width);enter code here
primaryStage.setY(height*-1);
primaryStage.show();
try {
FXMLLoader loader = new
FXMLLoader(getClass().getResource("Popup.fxml"));
loader.setController(new Controller());
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}}, 1, TimeUnit.SECONDS);
}
}