我在特定位置单击按钮时显示警告消息。
我已经完成,但是当我第二次按下button
时,位置更改为默认位置。
MessageController.java
public class MessageController implements Initializable {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
@FXML
private void handleButtonAction(ActionEvent event) {
alert.setTitle("Message");
alert.setHeaderText("You clicked button");
alert.show();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
((Stage) alert.getDialogPane().getScene().getWindow()).setX(50);
((Stage) alert.getDialogPane().getScene().getWindow()).setY(50);
}
Message.fxml
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="message.MessageController">
<children>
<Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
</children>
</AnchorPane>
Message.java(主类)
public class Message extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Message.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
如果我在方法内部显示警报的情况下使用setX和setY,则行为相同>>
private void handleButtonAction(ActionEvent event) { alert.setTitle("Message"); alert.setHeaderText("You clicked button"); ((Stage) alert.getDialogPane().getScene().getWindow()).setX(50); ((Stage) alert.getDialogPane().getScene().getWindow()).setY(50); alert.show(); }
上面的代码第二次单击按钮后还会抛出
NullPointerException
。
如何设置Alert
的固定位置?
我在特定位置单击按钮时显示警告消息。我已经做完了,但是当我第二次按下按钮时,位置已更改为默认位置。 MessageController.java ...
您可以通过使按钮成为对话框(而不是作为类成员)来创建对话框,从而实现您想要的结果,因此您的控制器看起来像这样