第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從常規(guī)類訪問控制器類的字段?

如何從常規(guī)類訪問控制器類的字段?

躍然一笑 2022-07-27 16:48:29
我正在使用 JavaFX 通過 Gluon 框架創(chuàng)建 Android/Iphone 應(yīng)用程序。我知道這種類型的“我怎樣才能獲得控制器類”的問題。但這是不同的。我知道如何獲得控制器類,但這不是我要求的。我問如何在不創(chuàng)建任何新對象的情況下從控制器類訪問字段。假設(shè)我們有一個這樣的 JavaFX 控制器類:public class PrimaryPresenter {    @FXML    private View primary;    @FXML    public LineChart<String, Number> lineChart; // Every time we update the socket, we update the chart too    public void initialize() {        primary.setShowTransitionFactory(BounceInRightTransition::new);        primary.showingProperty().addListener((obs, oldValue, newValue) -> {            if (newValue) {                AppBar appBar = MobileApplication.getInstance().getAppBar();                appBar.setNavIcon(MaterialDesignIcon.MENU.button(e ->                         MobileApplication.getInstance().getDrawer().open()));                appBar.setTitleText("Plot");            }        });           /*         * Initial stuffs for the lineChart         */        lineChart.setTitle("Adaptive MPC");    }}我想lineChart從另一個類訪問對象而不創(chuàng)建新的PrimaryPresenter控制器類。FXML 文件由 Scene Builder 創(chuàng)建。我問這個問題的原因是因為我有另一個通過線程循環(huán)的類,并且該線程將lineChart實時更新對象。
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

這是我的答案。在每個 Gluon 項目中,都有一個名為的類GluonApplication,它看起來像這樣:


package com.gluonapplication;


import com.gluonapplication.thread.SocketConnection;

import com.gluonapplication.views.PrimaryView;

import com.gluonapplication.views.SecondaryView;

import com.gluonhq.charm.glisten.application.MobileApplication;

import com.gluonhq.charm.glisten.visual.Swatch;

import javafx.scene.Scene;

import javafx.scene.image.Image;

import javafx.stage.Stage;


public class GluonApplication extends MobileApplication {


    public static final String PRIMARY_VIEW = HOME_VIEW;

    public static final String SECONDARY_VIEW = "Secondary View";


    @Override

    public void init() {

        addViewFactory(PRIMARY_VIEW, () -> new PrimaryView().getView());

        addViewFactory(SECONDARY_VIEW, () -> new SecondaryView().getView());

        DrawerManager.buildDrawer(this);

    }


    @Override

    public void postInit(Scene scene) {

        Swatch.GREEN.assignTo(scene);


        scene.getStylesheets().add(GluonApplication.class.getResource("style.css").toExternalForm());

        ((Stage) scene.getWindow()).getIcons().add(new Image(GluonApplication.class.getResourceAsStream("/icon2.png")));


    }

}

可以訪問控制器類中的所有字段。只需這樣做:


public class GluonApplication extends MobileApplication {


    public static final String PRIMARY_VIEW = HOME_VIEW;

    public static final String SECONDARY_VIEW = "Secondary View";

    private SocketConnection socketConnection;

    private View primaryView; // Add

    private View secondaryView; // Add


    @Override

    public void init() {

        primaryView = new PrimaryView().getView();

        secondaryView = new SecondaryView().getView();

        addViewFactory(PRIMARY_VIEW, () -> primaryView);

        addViewFactory(SECONDARY_VIEW, () -> secondaryView);

        DrawerManager.buildDrawer(this);


        /*

         * This will start the socket connection

         */

        socketConnection = new SocketConnection(primaryView, secondaryView);

        socketConnection.start();

    }


    @Override

    public void postInit(Scene scene) {

        Swatch.GREEN.assignTo(scene);


        scene.getStylesheets().add(GluonApplication.class.getResource("style.css").toExternalForm());

        ((Stage) scene.getWindow()).getIcons().add(new Image(GluonApplication.class.getResourceAsStream("/icon2.png")));



    }

}

然后在SocketConnection的構(gòu)造函數(shù)中。您可以像這樣訪問字段:


    /*

     * Constructor

     */

    public SocketConnection(View primaryView, View secondaryView) {


        /*

         * For secondaryView

         */

        statusTextField = (TextField) secondaryView.lookup("#statusTextField");

        ipAddressTextField = (TextField) secondaryView.lookup("#ipAddressTextField");

        startSignalModeComboBox = (ComboBox<String>) secondaryView.lookup("#startSignalModeComboBox");

        predictHorizonTextField = (TextField) secondaryView.lookup("#predictHorizonTextField");

        controlHorizonTextField = (TextField) secondaryView.lookup("#controlHorizonTextField");

        sampleTimeTextField = (TextField) secondaryView.lookup("#sampleTimeTextField");

        pwmDutyCallTextField = (TextField) secondaryView.lookup("#pwmDutyCallTextField");

        endTimeOfStartSignalTextField = (TextField) secondaryView.lookup("#endTimeOfStartSignalTextField");

        referencePointTextField = (TextField) secondaryView.lookup("#referencePointTextField");

        portTextField = (TextField) secondaryView.lookup("#portTextField");


        /*

         * For primaryView

         */

        lineChart = (LineChart<String, Number>) primaryView.lookup("#lineChart");


        /*

         * Declare the data object inside the chart

         */

        time_output = new Series<String, Number>();

        lineChart.getData().add(time_output);



    }


查看完整回答
反對 回復(fù) 2022-07-27
  • 1 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號