Cannot resolve symbol 'ButtonBuilder'

189
05 октября 2018, 01:30

Помогите разобраться, изучаю JavaFX, в книге с примерами есть пример по добавлению кнопок, но весь код разбит на части, после его изучения и сборки идея выдает ошибку с текстом Cannot resolve symbol 'ButtonBuilder', такой же случай с scane - в коде выделено так (** причина ошибки **) Сами кнопки созданы, обработчик событий прописан, в чем причина недогоняю, вот сам недокод

package sample;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Cursor;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Tooltip;
import javafx.scene.effect.BlendMode;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Бухгалтерия");
        primaryStage.setScene(new Scene(root, 700, 375));
        Button btn;
        btn = new Button();
        btn.setLayoutX(20);
        btn.setLayoutY(20);
        btn.setText("Тестировать свойства");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
                System.out.println("Свойства, унаследованные от класса Node:"+"\n"+
                        "Свойство blendMode: "+btn.blendModeProperty().getValue()+"\n"+
                        "Свойство boundsInLocal: "+btn.boundsInLocalProperty().getValue()+"\n");
            }
        });
        Button btnON;
        btnON = **ButtonBuilder**.create().build();
        btnON.setLayoutX(20);
        btnON.setLayoutY(150);
        btnON.setText("Установить свойства");
        btnON.setStyle("-fx-font: bold italic 12pt Arial;-fx-text-fill: #660000;
                -fx-background-color: #ff99ff; -fx-border-width: 3px; -fx-border-radius: 30;
        -fx-background-radius: 30;-fx-border-color: #660066;" );
        btnON.setPrefSize(200,30);
        btnON.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
                btn.setBlendMode(BlendMode.DARKEN);
                javafx.scene.shape.Circle clip=new javafx.scene.shape.Circle(75,53,80);
// btn.setClip(clip);
                btn.setCursor(Cursor.CLOSED_HAND);
                DropShadow effect=new DropShadow();
                effect.setOffsetX(10);
                effect.setOffsetY(10);
                btn.setEffect(effect);
//btn.setManaged(false);
//btn.setMouseTransparent(true);
                btn.setOpacity(0.5);
                btn.setRotate(10);
                btn.setLayoutX(80);
                btn.setScaleX(1.8);
                btn.setLayoutY(170);
                btn.setTranslateZ(-50);
                btn.setPrefSize(150,100);
                btn.setTooltip(new Tooltip
                        ("Это кнопка тестирования свойств класса Button"));
                Image im=new Image(this.getClass().getResource("image.png").toString());
                ImageView imv=new ImageView(im);
                imv.setFitHeight(50);
                imv.setFitWidth(50);
                btn.setGraphic(imv);
                btn.setStyle("-fx-font: bold italic 10pt Helvetica;");
//btn.setFont(Font.font("Helvetica", FontWeight.BOLD,
// FontPosture.ITALIC, 10));
                btn.setAlignment(Pos.CENTER);
                btn.setContentDisplay(ContentDisplay.RIGHT);
                btn.setUnderline(true);
                btn.setWrapText(true);
//btn.setCancelButton(true);
//btn.toBack();
            }
        });
        root.getChildren().add(btnON);
        root.getChildren().add(btn);
        primaryStage.setScene(**scene**);
        primaryStage.show();
    }

    public static void main(String[] args) {launch(args);
    }
}
Answer 1

Возможно вам следует прочитать до конца главы (или убедиться в правильности набора данного кода), т.к. довольно таки странные вещи делаются в нем. В противном случае, если на этом пример закончен и вы все верно набрали, то осмелюсь поставить под сомнение данную книгу.

Добавление импорта решит проблему с ButtonBuilder. На текущий момент является устаревшим, к использованию не рекомендуется. (уточните какую jdk вы используете и какую openJFX - в случае ее использования)

import javafx.scene.control.ButtonBuilder;

Строка Button btn; должна быть заменена на final Button btn; (это явная ошибка, и о ней должно быть написано, либо предложено исправить это самостоятельно)

Приведенная в коде строка primaryStage.setScene(scene); в принципе лишена смысла, т.к.:

  1. такой переменной даже не объявлено
  2. Установка сцены уже производилась в третьей строке метода

Что делать со следующими двумя строками подсказать не могу, т.к. недостаточно информации (что в sample.fxml; имеется ли контроллер; если да, то как именно он описан). Но в чистом виде в этом коде использовать их нельзя:

root.getChildren().add(btnON);
root.getChildren().add(btn);
READ ALSO
Где view из mvc в андроид приложении. Document-view. МVP.

Где view из mvc в андроид приложении. Document-view. МVP.

Возьмем просто андроид приложение : класс наследующий Activity в этом классе подключается layout и подписываемся на события от кнопокИ по определенному...

170
Как передать параметры в перечисление Cell

Как передать параметры в перечисление Cell

Есть метод, который описывает движение фигуры Слон на шахматной доскеПоследний Cell подсвечивается красным с ошибкой "Cell(int, int)' has private access in 'ru

166
Селектор для двух классов на одном узле

Селектор для двух классов на одном узле

Допустим у нас есть классыred и

140
Использовать Font Awesome через CSS

Использовать Font Awesome через CSS

Подскажите, мне надо перед текстом который находиться в li, путями css, поместить Icons(из font awesome)Как я понимаю надо через content, но когда вписываю...

158