Класс "Автомобиль" - код выдает множество ошибок - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д