Использование статического вложенного класса, встроенного в toString - PullRequest
0 голосов
/ 26 марта 2019

У меня есть эта задача:

"Мы не хотим полагаться на нас. Валюта toString() показывает, как валюта отображается в списке наших. Мы сможем сами это настроить.

Создайте статический вложенный класс с именем «Ячейка валюты» в ValutaOversikController в качестве расширителя. Ячейка списка <Value>.

Методы переопределения updateItem (Валюта и Валюта, логическое значение пусто).

Установите, как валюта должна быть представлена ​​в списке, например, "Страна - Код валюты"

Затем укажите CellFactory для нашего ListView, который возвращает экземпляр нового класса ячейки Currency. "

Я начал делать последний метод в Controller, но не знаю, правильно ли это. На данный момент это то, что у меня есть:

public class Controller {
@FXML
private ComboBox<Valuta> listeMedValutaerEn, listeMedValutaerTo;
@FXML
private ComboBox<Sorteringen> listeMedSortering;
@FXML
private TextField textFieldValutaerEn, textFieldValutaerTo;
@FXML
private ImageView imageViewValutaerEn, imageViewValutaerTo;

@FXML
public void initialize() {
    listeMedValutaerEn.setItems(DataHandler.hentValutaData());
    listeMedValutaerTo.setItems(DataHandler.hentValutaData());
    listeMedSortering.setItems(DataHandler.hentSorteringsData());

    listeMedValutaerEn.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Valuta>() {
        @Override
        public void changed(ObservableValue<? extends Valuta> observableValue, Valuta gammelValuta, Valuta nyValuta) {
            fyllUtValutaEn(nyValuta);
        }
    });

    listeMedValutaerTo.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Valuta>() {
        @Override
        public void changed(ObservableValue<? extends Valuta> observableValue, Valuta gammelValuta, Valuta nyValuta) {
            fyllUtValutaTo(nyValuta);
        }
    });

    listeMedSortering.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Sorteringen>() {
        @Override
        public void changed(ObservableValue<? extends Sorteringen> observableValue, Sorteringen gammelSortering, Sorteringen nySortering) {
            sortere(nySortering);
        }
    });
}

private void sortere(Sorteringen nySortering) {

    ObservableList<Valuta> valutaSomSkalSorteres = DataHandler.hentValutaData();

    CompareToValuta sortere = new CompareToValuta(nySortering.getSorteringsKode());

    Collections.sort(valutaSomSkalSorteres, sortere);

    listeMedValutaerEn.setItems(valutaSomSkalSorteres);
    listeMedValutaerTo.setItems(valutaSomSkalSorteres);
}

private void fyllUtValutaEn(Valuta enValuta) {
    if (enValuta != null) {
        Image flaggEn = new Image("https://www.countryflags.io/" + enValuta.getLandskode() + "/shiny/64.png");
        imageViewValutaerEn.setImage(flaggEn);
    }
}

private void fyllUtValutaTo(Valuta enValuta) {
    if (enValuta != null) {
        Image flaggTo = new Image("https://www.countryflags.io/" + enValuta.getLandskode() + "/shiny/64.png");
        imageViewValutaerTo.setImage(flaggTo);
    }
}

@FXML
private void buttonBeregn(ActionEvent event) {
    Integer valutaAntall = Integer.valueOf(textFieldValutaerEn.getText());
    double valutaNrEn = listeMedValutaerEn.getSelectionModel().getSelectedItem().getValutakurs();
    double valutaNrTo = listeMedValutaerTo.getSelectionModel().getSelectedItem().getValutakurs();
    double valutaResultat = valutaAntall * (valutaNrEn / valutaNrTo);
    textFieldValutaerTo.setText(String.valueOf(valutaResultat));
}

private static ListCell<Valuta> ValutaCelle() {
    ListCell<Valuta> tja = new ListCell<>();
    return tja;
}
}

Класс DataHandler:

public class DataHandler {
private final static ObservableList<Valuta> valutaListe = FXCollections.observableArrayList();
private final static ObservableList<Sorteringen> sorteringsListe = FXCollections.observableArrayList();

public static ObservableList<Sorteringen> hentSorteringsData() {
    if (sorteringsListe.isEmpty()) {
        sorteringsListe.add(new Sorteringen("Sortere alfabetisk på land synkende", 1));
        sorteringsListe.add(new Sorteringen("Sortere alfabetisk på land stigende", 2));
        sorteringsListe.add(new Sorteringen("Sortere på valutakode, stigende", 3));
        sorteringsListe.add(new Sorteringen("Sortere på valutakode, synkende", 4));
    }
    return sorteringsListe;
}

public static ObservableList<Valuta> hentValutaData() {
    if (valutaListe.isEmpty()) {
        valutaListe.addAll(genererValutaData());
    }
    return valutaListe;
}

private static ArrayList<Valuta> genererValutaData() {
    File kilden = new File("src/no/hiof/aleksar/oblig5/valutakurser.csv");

    ArrayList<Valuta> valutaerFraFiler = lesFraCSVFil(kilden);

    return valutaerFraFiler;
}

private static ArrayList<Valuta> lesFraCSVFil(File filSomLesesFra) {
    ArrayList<Valuta> valutaerFraFil = new ArrayList<>();
    try (BufferedReader bufretLeser = new BufferedReader(new FileReader(filSomLesesFra))) {
        String linje;
        while( (linje = bufretLeser.readLine()) != null ){
            String[] deler = linje.split(";");

            Valuta enValuta = new Valuta(deler[0], deler[1], deler[2], Double.parseDouble(deler[3]));

            valutaerFraFil.add(enValuta);
        }

    } catch (IOException e) {
        System.out.println(e);
    }

    return valutaerFraFil;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...