Как получить ценность, взятую из контроля - PullRequest
0 голосов
/ 13 апреля 2019

У меня два класса AddContractController и AddContractLogic. Я получаю значение от контролов в функции setValueControls, и все в порядке. Я печатаю значения, и я получаю значения. Однако в том же классе я бы использовал эти значения в новой функции. Как получить доступ к переменным из функции setValueControls. Я пробовал несколько способов, но я получаю исключение NullPinterException, потому что эти переменные инициируются только во время после нажатия кнопки.

package com.controller;

import com.logic.AddContractLogic;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;

import java.net.URL;
import java.util.ResourceBundle;

public class AddContractController implements Initializable {

    @FXML
    private DatePicker contractDatePicker;

    @FXML
    private RadioButton contractRadioButton;

    @FXML
    private RadioButton agreementRadioButton;

    @FXML
    private Spinner<Double> provisionSpinner;

    @FXML
    private TextField nameContractField;

    @FXML
    private Label statusLabel;

    @FXML
    private ToggleGroup toggleGroup1;



    SpinnerValueFactory.DoubleSpinnerValueFactory spinner = new SpinnerValueFactory.DoubleSpinnerValueFactory(1,400,12.5);


    public DatePicker getContractDatePicker() {
        return contractDatePicker;
    }

    public RadioButton getContractRadioButton() {
        return contractRadioButton;
    }

    public RadioButton getAgreementRadioButton() {
        return agreementRadioButton;
    }

    public Spinner<Double> getProvisionSpinner() {
        return provisionSpinner;
    }

    public TextField getNameContractField() {
        return nameContractField;
    }

    public Label getStatusLabel() {
        return statusLabel;
    }

    public ToggleGroup getToggleGroup1() {
        return toggleGroup1;
    }





    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        provisionSpinner.setValueFactory(spinner);
        provisionSpinner.setEditable(true);

        toggleGroup1 = new ToggleGroup();
        contractRadioButton.setToggleGroup(toggleGroup1);
        agreementRadioButton.setToggleGroup(toggleGroup1);
        contractRadioButton.setSelected(true);
    }

    @FXML
    public void actionAfterClick(){
        AddContractLogic logic = new AddContractLogic();
        logic.setValueControls(this);
    }
}
package com.logic;

import com.controller.AddContractController;

import java.time.LocalDate;
import java.util.ArrayList;

public class AddContractLogic {





    public  void setValueControls(AddContractController add){

        LocalDate date = add.getContractDatePicker().getValue();
        System.out.println(date);

        double provisionValue = add.getProvisionSpinner().getValue();
        System.out.println(provisionValue);

        String textContract = add.getNameContractField().getText();
        System.out.println(textContract);

        boolean isAgreement = add.getAgreementRadioButton().isSelected();
        System.out.println(isAgreement);

        boolean isContract = add.getContractRadioButton().isSelected();
        System.out.println(isContract);


    }

}
...