TableView - не отображаются данные - Java

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

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

Класс Controller
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.Pane;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.Scanner;
public class Controller implements Initializable {
    @FXML
    private TextField textFieldName;
    @FXML
    private Pane mainPane;
    @FXML
    private TabPane setPane;
    @FXML
    private Button createBell;
    @FXML
    private ComboBox comboDay;
    @FXML
    private ComboBox comboHour;
    @FXML
    private ComboBox comboMinute;
    @FXML
    private TableView<Bell> tableList;
    @FXML
    private TableColumn<Bell, String> columnName;
    @FXML
    private TableColumn<Bell, String> columnTime;
    @FXML
    private TableColumn<Bell, String> columnDay;
 
    public static int getInt(String set) {
        Scanner sc = new Scanner(set);
        String text = sc.nextLine();
        char[] chars = text.toCharArray();
        String result = String.valueOf(chars[0]) + String.valueOf(chars[1]);
        return Integer.parseInt(result);
    }
 
    public void createBell() {
        String name = textFieldName.getText();
        String day = (String) comboDay.getValue();
        int hour = getInt((String) comboHour.getValue());
        int minute = getInt((String) comboMinute.getValue());
        String time = String.valueOf(hour) + ":" + String.valueOf(minute);
        bellData.add(new Bell(name,day,time));
        tableList.setItems(bellData);
        setPane.setVisible(false);
        mainPane.setVisible(true);
    }
 
    ObservableList<Bell> bellData = FXCollections.observableArrayList();
 
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        columnName.setCellValueFactory(new PropertyValueFactory<Bell, String>("columnName"));
        columnDay.setCellValueFactory(new PropertyValueFactory<Bell, String>("columnDay"));
        columnTime.setCellValueFactory(new PropertyValueFactory<Bell, String>("columnTime"));
    }
}
Класс Bell
public class Bell {
    private String name;
    private String day;
    private String time;
 
    public Bell(String name, String day, String time) {
        this.name = name;
        this.day = day;
        this.time = time;
    }
 
    public String getName() {
        return name;
    }
 
    public String getDay() {
        return day;
    }
 
    public String getTime() {
        return time;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setDay(String day) {
        this.day = day;
    }
 
    public void setTime(String time) {
        this.time = time;
    }
}
Суть вопроса: когда я вбиваю данные в TextField, выбираю значения в ComboBox'ах и нажимаю на кнопку. При нажатии кнопки происходит действие creatBell. createBell обрабатывает все данные и заносит их в таблицу, но загвоздка в том, что новая строка создается, но данные в строках не появляются. Что с этим делать?

Решение задачи: «TableView - не отображаются данные»

textual
Листинг программы
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        columnName.setCellValueFactory(new PropertyValueFactory<Bell, String>("name"));
        columnDay.setCellValueFactory(new PropertyValueFactory<Bell, String>("day"));
        columnTime.setCellValueFactory(new PropertyValueFactory<Bell, String>("time"));
    }

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


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

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

15   голосов , оценка 3.667 из 5
Похожие ответы