クライアント用の JavaFX アプリケーションを作成したいと考えています。DataFX フレームワークを見つけて気に入りました。しかし、親から子 fview を呼び出すたび@FXMLViewFlowContext
に返されるため、問題があります。null
libバージョン8.0.7以下のコードを使用しました
i18n リソースを使用して、メイン コントローラーにサイド ビューを作成します。
// side controller will add links to the content flow Flow sideMenuFlow = new Flow(SideMenuController.class); sideMenuFlowHandler = new FlowHandler(sideMenuFlow, context, Common.getViewConfiguration()); drawer.setSidePane(sideMenuFlowHandler.start(new AnimatedFlowContainer(Duration.millis(320), ContainerAnimations.SWIPE_LEFT)));
そしてこれが私のサイドペインコントローラー
@FXMLController(value = "/res/fxml/test.fxml") public class SideMenuController { @FXMLViewFlowContext private ViewFlowContext context; @FXML private JFXListView test; @FXML @ActionTrigger("suppliers") private JFXButton suppliers; @FXML @ActionTrigger("history") private JFXButton history; @FXML @ActionTrigger("barcode") private JFXButton barcode; @FXML @ActionTrigger("settings") private JFXButton settings; @FXML @ActionTrigger("report") private JFXButton report; @FXML @ActionTrigger("users") private JFXButton users; @FXML @ActionTrigger("inventory") private JFXButton inventory; @FXML @ActionTrigger("shops") private JFXButton shops; @FXML @ActionTrigger("calculation") private JFXButton calculation; @PostConstruct public void initialize(){ test.propagateMouseEventsToParent(); System.out.println(context); FlowHandler contentFlowHandler = (FlowHandler) context.getRegisteredObject("ContentFlowHandler"); Flow contentFlow = (Flow) context.getRegisteredObject("ContentFlow"); bindNodeToController(suppliers, SuppliersController.class, contentFlow, contentFlowHandler); bindNodeToController(inventory, InventoryController.class, contentFlow, contentFlowHandler); bindNodeToController(users, UsersController.class, contentFlow, contentFlowHandler); bindNodeToController(history, HistoryController.class, contentFlow, contentFlowHandler); bindNodeToController(shops, ShopsController.class, contentFlow, contentFlowHandler); bindNodeToController(report, ReportController.class, contentFlow, contentFlowHandler); bindNodeToController(barcode, BarcodeController.class, contentFlow, contentFlowHandler); bindNodeToController(calculation, CalculationController.class, contentFlow, contentFlowHandler); bindNodeToController(settings, SettingsController.class, contentFlow, contentFlowHandler); } private void bindNodeToController(Node node, Class<?> controllerClass, Flow flow, FlowHandler flowHandler) { flow.withGlobalLink(node.getId(), controllerClass); node.setOnMouseClicked((e) -> { try { flowHandler.handle(node.getId()); } catch (Exception e1) { e1.printStackTrace(); } }); } }
プログラムを実行するNullPointerException
と、コンテキストが挿入されないため、エラーが発生します。検索しましたが、解決策が見つかりませんでした。また、古いライブラリを試してみましたが、役に立ちません。