Этикетка от Slider On fxml - PullRequest
       15

Этикетка от Slider On fxml

0 голосов
/ 11 марта 2019

Я новичок в javafx и не могу получить способ получить метки из Slider из fxml, я пытался сделать это из основного метода и метода контроллера, и я не знал, какой тег использовать для вызова метода onDrag * не работает без какого-либо успеха, любая помощь действительно будет оценена, спасибо заранее.


import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;

import javax.swing.*;

public class Controller {
    @FXML
    private TextField amount;
    @FXML
    private Label percent;
    @FXML
    private Slider slider;
    @FXML
    private TextField tip;
    @FXML
    private TextField total;
    @FXML
    private Button button;
    @FXML
    private Button clear;

    public void initialize() {
        button.setDisable(true);
        clear.setDisable(true);
    }

    @FXML
    public void keyHandle() {
        String text = amount.getText();
        boolean disableButton = (text.isEmpty() || 
        text.trim().isEmpty()) && (tip.getText().isEmpty() ||
                tip.getText().trim().isEmpty());
        button.setDisable(disableButton);
    }

    @FXML
    public void changeStateOfLabel() {
        slider.valueProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> 
            observable, Number oldValue, Number newValue) {
                percent.textProperty().setValue((int) slider.getValue() 
                + "%");
            }
        });

    }

    @FXML
    public void calculate(ActionEvent event) {
        try {
            int intAmount = Integer.valueOf(amount.getText());
            int tipAmount = Integer.valueOf(tip.getText());
            double intSlider = slider.valueProperty().getValue();
            double calculator = (intAmount + tipAmount * intSlider / 
            100);
            total.setText(String.valueOf(calculator));
            button.setDisable(true);
            clear.setDisable(false);
            if (slider.getValue() != intSlider) {
                intSlider = slider.getValue();
                calculator = (intAmount + tipAmount * intSlider / 100);
                button.setDisable(false);
                total.setText(String.valueOf(calculator));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Invalid Input");
        }
    }

    public void clear(ActionEvent event) {
        slider.setValue(0);
        total.clear();
        amount.clear();
        tip.clear();
        button.setDisable(true);
        clear.setDisable(true);
    }
}
...