Я делаю приложение javafx и использую библиотеку Jfoenix.
По этому коду открывается окно с конкретной информацией об элементе из таблицы:
@FXML
public void showEditPolicyDialog() {
Policy selectedPolicy = policyTable.getSelectionModel().getSelectedItem();
int selectedPolicyIndex = policyTable.getSelectionModel().getSelectedIndex();
if (selectedPolicy == null) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("No Policy Selected");
alert.setHeaderText(null);
alert.setContentText("Please select Policy you want to edit.");
alert.showAndWait();
return;
} else {
selectedPolicy = Datasource.getInstance().getFullPolicyById(selectedPolicy.getId());
}
Dialog<ButtonType> dialog = new Dialog<>();
dialog.initOwner(mainWindowAnchorPane.getScene().getWindow());
dialog.setTitle("Edit policy " + selectedPolicy.getNumber());
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("/ee/insa/views/PolicyDialogLayout.fxml"));
try {
dialog.getDialogPane().setContent(fxmlLoader.load());
} catch (IOException e) {
System.out.println("Couldn't load edit policy dialog");
e.printStackTrace();
return;
}
dialog.getDialogPane().getButtonTypes().add(ButtonType.OK);
dialog.getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
Button okButton = (Button) dialog.getDialogPane().lookupButton(ButtonType.OK);
okButton.setDefaultButton(false);
dialog.getDialogPane().getStylesheets().add("ee/insa/CSS/PolicyWindowCSS.css");
PolicyController policyController = fxmlLoader.getController();
Policy fullPolicy = Datasource.getInstance().getFullPolicyById(selectedPolicy.getId());
policyController.loadPolicyDataToForm(fullPolicy);
Optional<ButtonType> result = dialog.showAndWait();
if (result.isPresent() && result.get() == ButtonType.OK) {
policyController.updatePolicyData(fullPolicy);
Datasource.getInstance().updatePolicy(fullPolicy);
Policy updatedPolicyForMainTable = Datasource.getInstance().getPolicyForMainTableById(fullPolicy.getId());
policyTable.getItems().set(selectedPolicyIndex, updatedPolicyForMainTable);
policyTable.getSelectionModel().select(selectedPolicyIndex);
if (inClientSearch == false) {
checkTableView();
}
}
}
Как мне установить стиль кнопки диалога в JFoenix? Теперь кнопки имеют стандартный стиль Windows.
В CSS я могу найти область, где находятся кнопки (розового цвета):
.dialog-pane > .button-bar > .container {
-fx-background-color: deeppink;
}
Но я не могу точно найти эти 2 кнопки. Если я начну стиль по
.dialog-pane > .button {
-fx-background-color: deeppink;
}
тогда ВСЕ кнопки будут рестайлинговыми.
ОБНОВЛЕНИЕ:
Я пытался реализовать JFXDialog с помощью этого кода:
@FXML
public void showEditPolicyDialog(){
Policy selectedPolicy = policyTable.getSelectionModel().getSelectedItem();
selectedPolicy = Datasource.getInstance().getFullPolicyById(selectedPolicy.getId());
try {
Parent parent = FXMLLoader.load(getClass().getResource("/ee/insa/views/PolicyDialogLayout.fxml"));
JFXDialogLayout dialogLayout = new JFXDialogLayout();
dialogLayout.setBody(parent);
JFXDialog dialog = new JFXDialog( mainWindowStackPane, dialogLayout, JFXDialog.DialogTransition.BOTTOM);
dialog.show();
} catch (IOException e) {
e.printStackTrace();
}
}
но проблема в том, что это не отдельное окно, оно отображается только в пространстве главного окна.