首页 > 解决方案 > 如果不是这样,Javafx 窗口将在新阶段最大化,如果它处于最大化形式则恢复

问题描述

您能否告诉我在这里犯了什么错误,如果不是这样,则此代码最大化当前窗口,反之亦然。
这样做是为了刷新表视图,因为在隐藏 controlfx 的 PopOver 后无法刷新表。如果您建议在从 PopOver 获得价值后刷新表格内容的想法会更好。

public class HomeController implements Initializable {
@FXML
private JFXButton btnViewMedicine;

@FXML
private JFXButton btnAdditional;

@FXML
private GridPane commGridMed;

@FXML
private TabPane tabPane;

@FXML
private Tab tabMedicine;

@Override
public void initialize(URL arg0, ResourceBundle arg1) {
    tabPane.getSelectionModel().selectFirst();
    btnViewMedicine.fire();
    tabPane.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Tab>() {
        @Override 
        public void changed(ObservableValue<? extends Tab> observable, Tab oldTab, Tab newTab) {
            if(newTab!=null) {
                if(newTab.equals (tabMedicine)) {            
                    btnViewMedicine.fire();
                }
            }
    }
    });
}

@FXML
public void viewMedicine(ActionEvent event) throws IOException {
    GridPane node = (GridPane) FXMLLoader
            .load(getClass().getResource(Constants.VIEW_MEDICINE));
    deleteNode();
    commGridMed.add(node, 0, 1);
}

@FXML
void viewAdditional(ActionEvent event) throws IOException {
    BorderPane node = (BorderPane) FXMLLoader
            .load(getClass().getResource(Constants.VIEW_ADDITIONAL));
    deleteNode();
    commGridMed.add(node, 0, 1);
}

public void viewAdditional() {
    tabPane.getSelectionModel().clearSelection();
    tabPane.getSelectionModel().select(0);
    btnAdditional.fire();
}

public void viewMedicine() {
    tabPane.getSelectionModel().clearSelection();
    tabPane.getSelectionModel().select(0);
    btnViewMedicine.fire();
}

private void deleteNode() {
    Set<Node> deleteNodes = new HashSet<>();
    for (Node child : commGridMed.getChildren()) {
        Integer row = GridPane.getRowIndex(child);
        Integer column = GridPane.getColumnIndex(child);
        if (row != null) {
            if (row.equals(1) && column.equals(0)) {
                deleteNodes.add(child);
            }
        }
    }
    commGridMed.getChildren().removeAll(deleteNodes);
}

}

public class ViewMethods{
public void refresh(MouseEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(getClass().getResource(Constants.HOME));
    Parent root = loader.load();
    HomeController controller = (HomeController) loader.getController();
    controller.viewAdditional();
    Scene scene = new Scene(root);
    Stage stage = (Stage((Node)event.getSource()).getScene().getWindow();
    stage.setScene(scene);
    //stage.setMaximized(true);
    stage.show();
}
}

标签: javajavafx

解决方案


推荐阅读