Как загрузить содержимое txt файла в TableView?

451
12 января 2017, 04:24

Имеется файл txt с содержимым, как сделать так что бы содержимое этого файла отображалось в таблице (tableView)?

//....класс AircraftOverviewController

    package ch.makery.address.view;
    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.collections.transformation.FilteredList;
    import javafx.collections.transformation.SortedList;
    import javafx.fxml.FXML;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableView;
    import javafx.scene.control.TextField;
    import javafx.scene.effect.BlendMode;
    import javafx.scene.web.WebEngine;
    import javafx.scene.web.WebView;
    import ch.makery.address.MainApp;
    import ch.makery.address.model.Aircraft;
   public class AircraftOverviewController {
//подключение обектов интерфейса
@FXML
private TextField filterField;
@FXML
public WebView webSVG;
@FXML
public WebView flySVG;
@FXML
private TableView<Aircraft> personTable;
@FXML
private TableColumn<Aircraft, String> ModelColumn;
@FXML
private TableColumn<Aircraft, String> TypeColumn;
@FXML
private TableColumn<Aircraft, String> RangeColumn;
@FXML
private Button delitely;
@FXML
private Button edictory;
@FXML
private Button newland;

@FXML
private Label modelLabel;
@FXML
private Label typeLabel;
@FXML
private Label rangeLabel;
@FXML
private Label roominessLabel;
@FXML
private Label capacityLabel;
@FXML
private Label airlineLabel;
@FXML
private Label fuelRateLabel;
private MainApp mainApp;
/**
 * Данные, в виде наблюдаемого списка адресатов.
 */
public static ObservableList<Aircraft> aircraftData = FXCollections.observableArrayList();
public static FilteredList<Aircraft> filteredData = new FilteredList<>(aircraftData, p -> true);
public static SortedList<Aircraft> sortedData = new SortedList<>(filteredData);

/**
 Конструктор для обекта Person, добавляем некоторые данные. 
 */
public AircraftOverviewController() {
    aircraftData.add(new Aircraft("Airbus A319-100", "пассажирский","(6850-7750)км","236 мест","75,500кг","Austrian Airlines","2600 кг/ч"));
    aircraftData.add(new Aircraft("Boeing 737-100", "пассажирский","(2592-3518)км","103 мест","43,998кг","China Eastern Airlines","2800 кг/ч"));
    aircraftData.add(new Aircraft("Иркут MC-21", "пассажирский","(5400-6400)км","132 мест","72,560кг","Red Wings Airlines","3700 кг/ч"));
    aircraftData.add(new Aircraft("Comac C919", "пассажирский","(3425-4075)км","156 мест","77,310кг","Windrose Airline","3460 кг/ч"));
    aircraftData.add(new Aircraft("Embraer E-170", "пассажирский","(2100-3900)км","80 мест","37,200кг","Smart Wings","1850 кг/ч"));
    aircraftData.add(new Aircraft("Douglas DC-8", "пассажирский","(6300-7410)км","439 мест","140,600кг","SmartLynx Airlines Estonia","14500 кг/ч"));
    aircraftData.add(new Aircraft("Shanghai Y-10", "пассажирский","(7750-8300)км","178 мест","110,227кг","China Eastern Airlines","3700 кг/ч"));
    aircraftData.add(new Aircraft("Ан-124-100", "грузовой","(4800-15700)км","1050 м3","402,000кг","NORDICA","12600 кг/ч"));
    aircraftData.add(new Aircraft("Ту-204-100C", "грузовой","(3900-7000)км","1644 м3","110,750кг","Air France","3200 кг/ч"));
    aircraftData.add(new Aircraft("Ил-76T", "грузовой","(3000-6100)км","1857 м3","170,000кг","Ukrainian airline","8262 кг/ч"));
}


/**
 * Initializes the controller class. This method is automatically called
 * after the fxml file has been loaded.
 */
@FXML
private void initialize() {
    WebEngine engine = webSVG.getEngine();
    engine.load("file:///C:/Users/Alex/Desktop/Новая%20папка%20(5)/AddressApp-Part-3/src/ch/makery/address/view/message.svg");
    webSVG.setBlendMode(BlendMode.LIGHTEN);
    WebEngine flyine = flySVG.getEngine();
    flyine.load("file:///C:/Users/Alex/Desktop/Новая%20папка%20(5)/AddressApp-Part-3/src/ch/makery/address/view/aircraft.svg");
    // Инициализация таблицы адресатов с двумя столбцами.
    ModelColumn.setCellValueFactory(cellData -> cellData.getValue().modelNameProperty());
    TypeColumn.setCellValueFactory(cellData -> cellData.getValue().typeNameProperty());

    showAircraftDetails(null);
    personTable.getSelectionModel().selectedItemProperty().addListener(
            (observable, oldValue, newValue) -> showAircraftDetails(newValue));


    // 1. Wrap the ObservableList in a FilteredList (initially display all data).

            // 2. Set the filter Predicate whenever the filter changes.
            filterField.textProperty().addListener((observable, oldValue, newValue) -> {
                filteredData.setPredicate(person -> {
                    // If filter text is empty, display all persons.
                    if (newValue == null || newValue.isEmpty()) {
                        return true;
                    }
                    if (newValue != null) {
                         personTable.setItems(sortedData);  
                    }

                    // Compare first name and last name of every person with filter text.
                    String lowerCaseFilter = newValue.toLowerCase();
                    if (person.getModelName().toLowerCase().indexOf(lowerCaseFilter) != -1) {
                        return true; // Filter matches first name.

                    } else if (person.getTypeName().toLowerCase().indexOf(lowerCaseFilter) != -1) {
                        return true; // Filter matches last name.
                    } else if (person.getRangeName().toLowerCase().indexOf(lowerCaseFilter) != -1) {
                        return true; // Filter matches last name.
                    }
                    return false; // Does not match.
                });
            });
            sortedData.comparatorProperty().bind(personTable.comparatorProperty());         
}
@FXML
private void handleSeachPerson() {
     personTable.setItems(sortedData);      
    }   
/**
 * Вызывается главным приложением, которое даёт на себя ссылку.
 * 
 * @param mainApp
 */
public void setMainApp(MainApp mainApp) {
    this.mainApp = mainApp;   
    personTable.setItems(sortedData);    // // Добавление в таблицу данных из наблюдаемого списка
}
/**
 * Заполняет все текстовые поля, отображая подробности об адресате.
 * Если указанный адресат = null, то все текстовые поля очищаются.
 * 
 * @param person — адресат типа Person или null
 */
private void showAircraftDetails(Aircraft aircraft) {
    if (aircraft != null) {
        // Fill the labels with info from the person object.
        modelLabel.setText(aircraft.getModelName());
        typeLabel.setText(aircraft.getTypeName());
        rangeLabel.setText(aircraft.getRangeName());
        roominessLabel.setText(aircraft.getRoominess());
        capacityLabel.setText(aircraft.getCapacity());
        airlineLabel.setText(aircraft.getAirline());
        fuelRateLabel.setText(aircraft.getFuelRate());
    } else {
        modelLabel.setText("");
        typeLabel.setText("");
        rangeLabel.setText("");
        roominessLabel.setText("");
        capacityLabel.setText("");
        airlineLabel.setText("");
        fuelRateLabel.setText("");
    }
}

/**
 * Вызывается, когда пользователь кликает по кнопке удаления.
 */
@FXML
public void handleDeletePerson(){
    personTable.setItems(aircraftData);
    int selectedId = personTable.getSelectionModel().getSelectedIndex();
    personTable.getItems().remove(selectedId);
    if(personTable.getItems().isEmpty()) {
        delitely.setDisable(true);
        edictory.setDisable(true);// таблица пустая
    }
}

/**
 * Вызывается, когда пользователь кликает по кнопке New...
 * 
 */
@FXML
private void handleNewPerson() {
    Aircraft tempPerson = new Aircraft();
    boolean okClicked = mainApp.showPersonEditDialog(tempPerson);
    if (okClicked) {
        aircraftData.add(tempPerson);
    }
}
/**
 * Вызывается, когда пользователь кликает по кнопка Edit...
 * 
 */
@FXML
private void handleEditPerson() {
    Aircraft selectedPerson = personTable.getSelectionModel().getSelectedItem();
    if (selectedPerson != null) {
        boolean okClicked = mainApp.showPersonEditDialog(selectedPerson);
        if (okClicked) {
            showAircraftDetails(selectedPerson);
        }
    }
}
}

//....класс Aircraft

    package ch.makery.address.model;

    import javafx.beans.property.SimpleStringProperty;
    import javafx.beans.property.StringProperty;

    public class Aircraft { 
private StringProperty modelName;
private StringProperty typeName;
private StringProperty rangeName;
private StringProperty roominess;
private StringProperty capacity;
private StringProperty airline;
private StringProperty fuelRate;

/**
 * Конструктор по умолчанию.
 */
public Aircraft() {
    this(null, null, null, null,null,null,null);
}
/**
 * Конструктор с данными.
 * 
 * @param modelName
 * @param typeName
 * @param rangeName
 */
public Aircraft(String model, String type, String range, String roominess, String capacity, String airline, String fuelRate){
    this.modelName = new SimpleStringProperty(model);
    this.typeName = new SimpleStringProperty(type);
    this.rangeName = new SimpleStringProperty(range);
     // Какие-то динамические данные.
            this.roominess = new SimpleStringProperty(roominess);
            this.capacity = new SimpleStringProperty(capacity);
            this.airline = new SimpleStringProperty(airline);
            this.fuelRate = new SimpleStringProperty(fuelRate);
}

//Методы что принимают значения.
//-----------------------------------------//
        public StringProperty rangeNameProperty() {
            return rangeName;
        }
    //-----------------------------------------//
    //-----------------------------------------//
                public String getRangeName() {
                    return rangeName.get();
                }
    //-----------------------------------------//   
    //-----------------------------------------//
                public void setRangeName(String rangeName) {
                    this.rangeName.set(rangeName);
                }
    //-----------------------------------------//               

    public String getModelName() {
        return modelName.get();
    }
    public void setModelName(String modelName) {
        this.modelName.set(modelName);
    }

    public StringProperty modelNameProperty() {
        return modelName;
    }
    public String getTypeName() {
        return typeName.get();
    }
    public void setTypeName(String typeName) {
        this.typeName.set(typeName);
    }
    public StringProperty typeNameProperty() {
        return typeName;
    }
    //----------------------------------------//

    public String getRoominess() {
        return roominess.get();
    }
    public void setRoominess(String roominess) {
        this.roominess.set(roominess);
    }
    public StringProperty RoominessProperty() {
        return roominess;
    }
    //-----------------------------------------//
    public String getCapacity() {
        return capacity.get();
    }
    public void setCapacity(String capacity) {
        this.capacity.set(capacity);
    }
    public StringProperty CapacityProperty() {
        return capacity;
    }
    //-----------------------------------------//
    public String getAirline() {
        return airline.get();
    }
    public void setAirline(String airline) {
        this.airline.set(airline);
    }
    public StringProperty cityAirline() {
        return airline;
    }
    //------------------------------------------//
    public String getFuelRate() {
        return fuelRate.get();
    }
    public void setFuelRate(String fuelRate) {
        this.fuelRate.set(fuelRate);
    }
    public StringProperty FuelRateProperty() {
        return fuelRate;
    }
}
READ ALSO
Не загружается css в Open Server

Не загружается css в Open Server

Почему-то не грузятся css в Open Server на втором компьютере, а на основном всё замечательно работает ! Не могу понять в чём проблема

723
Как создать анкорную ссылку в шаблоне компонента Битрикса?

Как создать анкорную ссылку в шаблоне компонента Битрикса?

Здравствуйте! Подскажите пожалуйста, как верно оформить анкорную ссылку в шаблоне компонента Битрикса? Есть шаблон компонента и необходимо...

355
Разделить текст на div

Разделить текст на div

Всем добрый день! Есть большой текст, со списками, картинками, мне нужно разделить на блоки divРазмер блоков динамический - зависит от разрешения...

301