Java FX Изменение цвета строки - PullRequest
0 голосов
/ 20 ноября 2018

В моей программе мне нужно изменить цвет строки образца, нажав на кнопку радио.Но я продолжаю получать ошибки каждый раз, когда нажимаю на них.я продолжаю получать эту ошибку.Я также использую e (fx) clipse для кодирования этого.

Причина: java.lang.ClassCastException: javafx.graphics@10.0.2/javafx.scene.paint.Color не может быть приведен кjavafx.graphics@10.0.2/javafx.scene.text.Text at employee.view.MainController.colorRadioButtonSelected (MainController.java:83) пакет employee.view;

import javafx.beans.value.ChangeListener;
import javafx.scene.paint.Paint;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ListView;

public class MainController {

    @FXML
    private BorderPane myPane;

    @FXML
    private RadioButton blackRadioButton;

    @FXML
    private ToggleGroup colorToggleGroup;

    @FXML
    private RadioButton redRadioButton;

    @FXML
    private RadioButton blueRadioButton;

    @FXML
    private RadioButton greenRadioButton;

    @FXML
    private ListView<String> mylistView;

    @FXML
    private CheckBox boldCheckBox;

    @FXML
    private CheckBox italicCheckBox;

    String Text;
    Text sample=new Text(50,300,"SAMPLE");
    FontWeight weight = FontWeight.NORMAL;            //   FontWeight.BOLD is boldface
    FontPosture posture = FontPosture.REGULAR;       //    FontPosture.ITALIC is italic
    int size=18;
    boolean fontBold = false;
    boolean fontItalic = false;

    public void initialize() {
        blackRadioButton.setUserData(Color.BLACK);
        redRadioButton.setUserData(Color.RED);
        greenRadioButton.setUserData(Color.GREEN);
        blueRadioButton.setUserData(Color.BLUE);
        myPane.getChildren( ).add( sample );
        sample.setFont(Font.font("Verdana", weight, posture, size));     
    }   

    @FXML
    void boldCheckBoxSelected(ActionEvent event) {
    }

    @FXML
    void colorRadioButtonSelected(ActionEvent event) {
        sample= (javafx.scene.text.Text) colorToggleGroup.getSelectedToggle().getUserData();
    }

    @FXML
    void italicCheckBoxSelected(ActionEvent event) {
    }
}

1 Ответ

0 голосов
/ 20 ноября 2018

Вы устанавливаете данные как Color

blackRadioButton.setUserData(Color.BLACK);
redRadioButton.setUserData(Color.RED);
greenRadioButton.setUserData(Color.GREEN);
blueRadioButton.setUserData(Color.BLUE);

Но вы пытаетесь привести их как Text

(javafx.scene.text.Text) colorToggleGroup.getSelectedToggle().getUserData();

Чтобы исправить это, вы можете использовать оператор switch или несколькоif заявления, чтобы установить sample объект в зависимости от того, какой цвет выбран.Пример оператора if:

if ((Color) colorToggleGroup.getSelectedToggle().getUserData() == Color.BLUE) {
    sample = new Text(50, 300, "Something");
}

В качестве альтернативы вы можете установить данные для переключателей как Text, например:

blueRadioButton.setUserData(new Text(50, 300, "Something"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...