使用由toString插入的静态嵌套类

时间:2019-03-26 15:11:33

标签: javafx

我有这个任务:

“我们不想依靠我们的toString()货币来显示货币在我们的列表中的显示方式。我们将能够自行进行设置。

ValutaOversikController中创建一个名为“ Currency Cell”的静态嵌套类,作为扩展列表单元格<Value>

覆盖方法updateItem(货币和货币,布尔值为空)。

设置货币在列表中的显示方式,例如“国家-货币代码”

然后将CellFactory放入我们的ListView,这将返回新的Currency Cell类的实例。”

我开始制作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;
}
}

0 个答案:

没有答案