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