Класс "Автомобиль" - код выдает множество ошибок - Java

Узнай цену своей работы

Формулировка задачи:

/*
С использованием  компонентов JavaFX 2 необходимо создать Java приложение реализующее добавление, редактирование и удаление данных заданного по варианту типа
информации T(см. табл. 4.1). Данные отображать в виде таблицы. Реализовать поля ввода для добавления новых записей. Редактирование записей реализовать в таблице
(использовать CellValueFactory). Предусмотреть возможность загрузки информации из текстового файла и сохранения в текстовый файл. Данные столбца N отображать в виде
автоматически обновляющегося графика/диаграммы G(см. табл. 4.1).
 
Тип информации (см. ниже)   Поле для отображенияN       Тип графика/диаграммы G
        C                           3                       StackedBarChart
 
C: Автомобиль(Марка, Год выпуска, Объем двигателя, Максимальная скорость);
 
*/
package lab5;
 
import javafx.application.Application;
import javafx.beans.property.SimpleFloatProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.TilePane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.scene.chart.*;
 
public class lab5 extends Application{
 
    private TableView<Ccar> table = new TableView<Ccar>();
    private final ObservableList<Ccar> data =
            FXCollections.observableArrayList(
                    new Ccar("Mercedes", 2015, 2.5f, 250),
                    new Ccar("BMW", 2014, 2.0f, 220)
            );
    final HBox hb = new HBox();
 
    ObservableList<PieChart.Data> pcData = FXCollections.observableArrayList();
 
    PieChart chart = new PieChart();
 
    public void updateChart(){
        int i;
        pcData.clear();
        for (i = 0; i < data.size(); i++) {
            pcData.add(new PieChart.Data(data.get(i).brand.getValue().toString(),
                    Double.parseDouble(data.get(i).year.getValue().toString())));
        }
        chart.setData(pcData);
    }
 
    public static void main(String[] args){
        launch(args);
    }
 
    @Override
    public void start(Stage stage){
        Scene scene = new Scene(new Group());
        stage.setTitle("Пример таблицы");
        stage.setWidth(850);
        stage.setHeight(550);
 
        final Label label = new Label("Автомобили");
        label.setFont(new Font("Arial", 20));
        label.setMaxWidth(300);
 
        table.setEditable(true);
 
        data.addListener(new ListChangeListener<Ccar>() {
            @Override
            public void onChanged(javafx.collections.ListChangeListener.Change<? extends Ccar> arg0) {
                updateChart();
            }
        });
 
        TableColumn brandcol = new TableColumn("Марка");
        brandcol.setMinWidth(100);
        brandcol.setCellValueFactory(
                new PropertyValueFactory<Ccar,String>("brand"));
        brandcol.setCellFactory(TextFieldTableCell.forTableColumn());
        brandcol.setOnEditCommit(
                new EventHandler<CellEditEvent<Ccar, String>>() {
                    @Override
                    public void handle(CellEditEvent<Ccar, String> event) {
                        ((Ccar) event.getTableView().getItems().get(
                                event.getTablePosition().getRow())
                        ).setBrand(event.getNewValue());
                    }
                }
        );
 
        TableColumn yearcol = new TableColumn("Год выпуска");
        yearcol.setMinWidth(100);
        yearcol.setCellValueFactory(
                new PropertyValueFactory<Ccar, String>("year"));
        yearcol.setCellFactory(TextFieldTableCell.forTableColumn());
        yearcol.setOnEditCommit(
                new EventHandler<CellEditEvent<Ccar, String>>() {
                    @Override
                    public void handle(CellEditEvent<Ccar, String> event) {
                        ((Ccar) event.getTableView().getItems().get(
                                event.getTablePosition().getRow())
                        ).setYear(Integer.parseInt(event.getNewValue()));
                    }
                }
        );
 
        TableColumn volumecol = new TableColumn("Объем");
        volumecol.setMinWidth(100);
        volumecol.setCellValueFactory(
                new PropertyValueFactory<Ccar, String>("volume"));
        volumecol.setCellFactory(TextFieldTableCell.forTableColumn());
        volumecol.setOnEditCommit(
                new EventHandler<CellEditEvent<Ccar, String>>() {
                    @Override
                    public void handle(CellEditEvent<Ccar, String> event) {
                        ((Ccar) event.getTableView().getItems().get(
                                event.getTablePosition().getRow())
                        ).setVolume(Float.parseFloat(event.getNewValue()));
                    }
                }
        );
 
        TableColumn speedcol = new TableColumn("Скорость");
        speedcol.setMinWidth(100);
        speedcol.setCellValueFactory(
                new PropertyValueFactory<Ccar, String>("speed"));
        speedcol.setCellFactory(TextFieldTableCell.forTableColumn());
        speedcol.setOnEditCommit(
                new EventHandler<CellEditEvent<Ccar, String>>() {
                    @Override
                    public void handle(CellEditEvent<Ccar, String> event) {
                        ((Ccar) event.getTableView().getItems().get(
                                event.getTablePosition().getRow())
                        ).setSpeed(Integer.parseInt(event.getNewValue()));
                    }
                }
        );
 
        table.setItems(data);
        table.getColumns().addAll(brandcol, yearcol, volumecol, speedcol);
        table.setMaxWidth(201);
 
        final TextField addBrand = new TextField();
        addBrand.setPromptText("Марка");
        addBrand.setMaxWidth(brandcol.getPrefWidth());
 
        final TextField addYear = new TextField();
        addYear.setPromptText("Год");
        addYear.setMaxWidth(yearcol.getPrefWidth());
 
        final TextField addVolume = new TextField();
        addVolume.setPromptText("Объем");
        addVolume.setMaxWidth(volumecol.getPrefWidth());
 
        final TextField addSpeed = new TextField();
        addSpeed.setPromptText("Скорость");
        addSpeed.setMaxWidth(volumecol.getPrefWidth());
 
        final Button addButton = new Button("Add");
        addButton.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                data.add(new Ccar(
                        addBrand.getText(),
                        Integer.parseInt(addYear.getText()),
                        Float.parseFloat(addVolume.getText()),
                        Integer.parseInt(addSpeed.getText())));
                addBrand.clear();
                addYear.clear();
                addVolume.clear();
                addSpeed.clear();
            }
        });
 
        hb.getChildren().addAll(addBrand, addYear, addVolume, addSpeed, addButton);
        hb.setSpacing(3);
        hb.setMaxWidth(300);
 
        final VBox vBox = new VBox();
        vBox.setSpacing(5);
        vBox.setPadding(new Insets(10, 0, 0, 10));
        vBox.getChildren().addAll(label, table, hb);
        vBox.setMaxWidth(300);
 
        chart.setTitle("Автомобили");
        chart.setPadding(new Insets(10, 0, 0, 10));
        chart.setMaxWidth(400);
        updateChart();
 
        TilePane tilePane = new TilePane();
        tilePane.getChildren().addAll(vBox, chart);
 
        ((Group) scene.getRoot()).getChildren().add(tilePane);
 
        stage.setScene(scene);
        stage.show();
    }
 
    public static class Ccar {
        private final SimpleStringProperty brand;
        private final SimpleIntegerProperty year;
        private final SimpleFloatProperty volume;
        private final SimpleIntegerProperty speed;
 
        private Ccar(String nbrand, int nyear, float nvolume, int nspeed) {
            this.brand = new SimpleStringProperty(nbrand);
            this.year = new SimpleIntegerProperty(nyear);
            this.volume = new SimpleFloatProperty(nvolume);
            this.speed = new SimpleIntegerProperty(nspeed);
        }
 
        public String getBrand(){
            return brand.get();
        }
 
        public void setBrand(String nbrand){
            brand.set(nbrand);
        }
 
        public int getYear(){
            return year.get();
        }
 
        public void setYear(int nyear){
            year.set(nyear);
        }
 
        public float getVolume(){
            return volume.get();
        }
 
        public void setVolume(float nvolume){
            volume.set(nvolume);
        }
 
        public int getSpeed(){
            return speed.get();
        }
 
        public void setSpeed(int nspeed){
            speed.set(nspeed);
        }
    }
}
вылетает с кучей ошибок, что не так?

Решение задачи: «Класс "Автомобиль" - код выдает множество ошибок»

textual
Листинг программы
stage.show();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5