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

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

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

Листинг программы
  1. /*
  2. С использованием компонентов JavaFX 2 необходимо создать Java приложение реализующее добавление, редактирование и удаление данных заданного по варианту типа
  3. информации T(см. табл. 4.1). Данные отображать в виде таблицы. Реализовать поля ввода для добавления новых записей. Редактирование записей реализовать в таблице
  4. (использовать CellValueFactory). Предусмотреть возможность загрузки информации из текстового файла и сохранения в текстовый файл. Данные столбца N отображать в виде
  5. автоматически обновляющегося графика/диаграммы G(см. табл. 4.1).
  6. Тип информации (см. ниже) Поле для отображенияN Тип графика/диаграммы G
  7. C 3 StackedBarChart
  8. C: Автомобиль(Марка, Год выпуска, Объем двигателя, Максимальная скорость);
  9. */
  10. package lab5;
  11. import javafx.application.Application;
  12. import javafx.beans.property.SimpleFloatProperty;
  13. import javafx.beans.property.SimpleIntegerProperty;
  14. import javafx.beans.property.SimpleStringProperty;
  15. import javafx.collections.FXCollections;
  16. import javafx.collections.ListChangeListener;
  17. import javafx.collections.ObservableList;
  18. import javafx.event.ActionEvent;
  19. import javafx.event.EventHandler;
  20. import javafx.geometry.Insets;
  21. import javafx.scene.Group;
  22. import javafx.scene.Scene;
  23. import javafx.scene.control.Button;
  24. import javafx.scene.control.Label;
  25. import javafx.scene.control.TableColumn;
  26. import javafx.scene.control.TableColumn.CellEditEvent;
  27. import javafx.scene.control.TableView;
  28. import javafx.scene.control.TextField;
  29. import javafx.scene.control.cell.PropertyValueFactory;
  30. import javafx.scene.control.cell.TextFieldTableCell;
  31. import javafx.scene.layout.HBox;
  32. import javafx.scene.layout.TilePane;
  33. import javafx.scene.layout.VBox;
  34. import javafx.scene.text.Font;
  35. import javafx.stage.Stage;
  36. import javafx.scene.chart.*;
  37. public class lab5 extends Application{
  38. private TableView<Ccar> table = new TableView<Ccar>();
  39. private final ObservableList<Ccar> data =
  40. FXCollections.observableArrayList(
  41. new Ccar("Mercedes", 2015, 2.5f, 250),
  42. new Ccar("BMW", 2014, 2.0f, 220)
  43. );
  44. final HBox hb = new HBox();
  45. ObservableList<PieChart.Data> pcData = FXCollections.observableArrayList();
  46. PieChart chart = new PieChart();
  47. public void updateChart(){
  48. int i;
  49. pcData.clear();
  50. for (i = 0; i < data.size(); i++) {
  51. pcData.add(new PieChart.Data(data.get(i).brand.getValue().toString(),
  52. Double.parseDouble(data.get(i).year.getValue().toString())));
  53. }
  54. chart.setData(pcData);
  55. }
  56. public static void main(String[] args){
  57. launch(args);
  58. }
  59. @Override
  60. public void start(Stage stage){
  61. Scene scene = new Scene(new Group());
  62. stage.setTitle("Пример таблицы");
  63. stage.setWidth(850);
  64. stage.setHeight(550);
  65. final Label label = new Label("Автомобили");
  66. label.setFont(new Font("Arial", 20));
  67. label.setMaxWidth(300);
  68. table.setEditable(true);
  69. data.addListener(new ListChangeListener<Ccar>() {
  70. @Override
  71. public void onChanged(javafx.collections.ListChangeListener.Change<? extends Ccar> arg0) {
  72. updateChart();
  73. }
  74. });
  75. TableColumn brandcol = new TableColumn("Марка");
  76. brandcol.setMinWidth(100);
  77. brandcol.setCellValueFactory(
  78. new PropertyValueFactory<Ccar,String>("brand"));
  79. brandcol.setCellFactory(TextFieldTableCell.forTableColumn());
  80. brandcol.setOnEditCommit(
  81. new EventHandler<CellEditEvent<Ccar, String>>() {
  82. @Override
  83. public void handle(CellEditEvent<Ccar, String> event) {
  84. ((Ccar) event.getTableView().getItems().get(
  85. event.getTablePosition().getRow())
  86. ).setBrand(event.getNewValue());
  87. }
  88. }
  89. );
  90. TableColumn yearcol = new TableColumn("Год выпуска");
  91. yearcol.setMinWidth(100);
  92. yearcol.setCellValueFactory(
  93. new PropertyValueFactory<Ccar, String>("year"));
  94. yearcol.setCellFactory(TextFieldTableCell.forTableColumn());
  95. yearcol.setOnEditCommit(
  96. new EventHandler<CellEditEvent<Ccar, String>>() {
  97. @Override
  98. public void handle(CellEditEvent<Ccar, String> event) {
  99. ((Ccar) event.getTableView().getItems().get(
  100. event.getTablePosition().getRow())
  101. ).setYear(Integer.parseInt(event.getNewValue()));
  102. }
  103. }
  104. );
  105. TableColumn volumecol = new TableColumn("Объем");
  106. volumecol.setMinWidth(100);
  107. volumecol.setCellValueFactory(
  108. new PropertyValueFactory<Ccar, String>("volume"));
  109. volumecol.setCellFactory(TextFieldTableCell.forTableColumn());
  110. volumecol.setOnEditCommit(
  111. new EventHandler<CellEditEvent<Ccar, String>>() {
  112. @Override
  113. public void handle(CellEditEvent<Ccar, String> event) {
  114. ((Ccar) event.getTableView().getItems().get(
  115. event.getTablePosition().getRow())
  116. ).setVolume(Float.parseFloat(event.getNewValue()));
  117. }
  118. }
  119. );
  120. TableColumn speedcol = new TableColumn("Скорость");
  121. speedcol.setMinWidth(100);
  122. speedcol.setCellValueFactory(
  123. new PropertyValueFactory<Ccar, String>("speed"));
  124. speedcol.setCellFactory(TextFieldTableCell.forTableColumn());
  125. speedcol.setOnEditCommit(
  126. new EventHandler<CellEditEvent<Ccar, String>>() {
  127. @Override
  128. public void handle(CellEditEvent<Ccar, String> event) {
  129. ((Ccar) event.getTableView().getItems().get(
  130. event.getTablePosition().getRow())
  131. ).setSpeed(Integer.parseInt(event.getNewValue()));
  132. }
  133. }
  134. );
  135. table.setItems(data);
  136. table.getColumns().addAll(brandcol, yearcol, volumecol, speedcol);
  137. table.setMaxWidth(201);
  138. final TextField addBrand = new TextField();
  139. addBrand.setPromptText("Марка");
  140. addBrand.setMaxWidth(brandcol.getPrefWidth());
  141. final TextField addYear = new TextField();
  142. addYear.setPromptText("Год");
  143. addYear.setMaxWidth(yearcol.getPrefWidth());
  144. final TextField addVolume = new TextField();
  145. addVolume.setPromptText("Объем");
  146. addVolume.setMaxWidth(volumecol.getPrefWidth());
  147. final TextField addSpeed = new TextField();
  148. addSpeed.setPromptText("Скорость");
  149. addSpeed.setMaxWidth(volumecol.getPrefWidth());
  150. final Button addButton = new Button("Add");
  151. addButton.setOnAction(new EventHandler<ActionEvent>() {
  152. @Override
  153. public void handle(ActionEvent event) {
  154. data.add(new Ccar(
  155. addBrand.getText(),
  156. Integer.parseInt(addYear.getText()),
  157. Float.parseFloat(addVolume.getText()),
  158. Integer.parseInt(addSpeed.getText())));
  159. addBrand.clear();
  160. addYear.clear();
  161. addVolume.clear();
  162. addSpeed.clear();
  163. }
  164. });
  165. hb.getChildren().addAll(addBrand, addYear, addVolume, addSpeed, addButton);
  166. hb.setSpacing(3);
  167. hb.setMaxWidth(300);
  168. final VBox vBox = new VBox();
  169. vBox.setSpacing(5);
  170. vBox.setPadding(new Insets(10, 0, 0, 10));
  171. vBox.getChildren().addAll(label, table, hb);
  172. vBox.setMaxWidth(300);
  173. chart.setTitle("Автомобили");
  174. chart.setPadding(new Insets(10, 0, 0, 10));
  175. chart.setMaxWidth(400);
  176. updateChart();
  177. TilePane tilePane = new TilePane();
  178. tilePane.getChildren().addAll(vBox, chart);
  179. ((Group) scene.getRoot()).getChildren().add(tilePane);
  180. stage.setScene(scene);
  181. stage.show();
  182. }
  183. public static class Ccar {
  184. private final SimpleStringProperty brand;
  185. private final SimpleIntegerProperty year;
  186. private final SimpleFloatProperty volume;
  187. private final SimpleIntegerProperty speed;
  188. private Ccar(String nbrand, int nyear, float nvolume, int nspeed) {
  189. this.brand = new SimpleStringProperty(nbrand);
  190. this.year = new SimpleIntegerProperty(nyear);
  191. this.volume = new SimpleFloatProperty(nvolume);
  192. this.speed = new SimpleIntegerProperty(nspeed);
  193. }
  194. public String getBrand(){
  195. return brand.get();
  196. }
  197. public void setBrand(String nbrand){
  198. brand.set(nbrand);
  199. }
  200. public int getYear(){
  201. return year.get();
  202. }
  203. public void setYear(int nyear){
  204. year.set(nyear);
  205. }
  206. public float getVolume(){
  207. return volume.get();
  208. }
  209. public void setVolume(float nvolume){
  210. volume.set(nvolume);
  211. }
  212. public int getSpeed(){
  213. return speed.get();
  214. }
  215. public void setSpeed(int nspeed){
  216. speed.set(nspeed);
  217. }
  218. }
  219. }
вылетает с кучей ошибок, что не так?

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут