2016-01-21 3 views
3

У меня есть один файл класса Nepokretnost.java, в котором конструктор выглядеть следующим образом:данные столбцов TableView установить до 2 знаков после запятой

public Nepokretnost(String tipNepokretnosti, String zona, String pravo, 
     double povrsina, int amortizacija, double osnovica, double kredit, double porez) { 
    this.tipNepokretnosti = tipNepokretnosti; 
    this.zona = zona; 
    this.pravo = pravo; 
    this.povrsina = povrsina; 
    this.amortizacija = amortizacija; 
    this.osnovica = osnovica; 
    this.kredit = kredit; 
    this.porez = porez; 
} 

Кроме того, у меня есть TableView с колонкой для каждого из полей класса. Моя проблема заключается в двойном поле «povrsina». Я хочу установить его из TextField.

Я послал содержимое TextField с именем txtPovrsina двойной переменной:

double dPovrsina; 
dPovrsina = Double.parseDouble(txtPovrsina.getText()); 

затем поместить все поля в TableView:

ObservableList<Nepokretnost> data = tblTabela.getItems(); 
    data.add(new Nepokretnost(cboNepokretnost.getValue().toString(),cboZona.getValue().toString(), 
      txtPravo,dPovrsina,40,450000.25,2500.00,2500.00)); 

Все работает хорошо, но я хочу некоторое поведение приложение, которое я могу Не выясните, как установить. Прямо сейчас, когда я помещаю int как 25 в TextField, я получаю 25.0 в столбце TableView. Я хочу, чтобы все ячейки столбцов имели ровно 2 десятичных знака.

Я пробовал:

DecimalFormat df=new DecimalFormat("#.00"); 
ObservableList<Nepokretnost> data = tblTabela.getItems(); 
    data.add(new Nepokretnost(cboNepokretnost.getValue().toString(),cboZona.getValue().toString(), 
      txtPravo,df.format(dPovrsina),40,450000.25,2500.00,2500.00)); 

, но я получаю ошибку «Несовместимые типы: String не могут быть преобразованы в два раза»

Я все еще нуб в Java, но я думаю, это формат делает строки и я хочу чтобы ввести double, чтобы иметь 2 десятичных знака. Подобно этому столбцу, у меня будет такая же проблема с другими двойными полями.

Может ли кто-нибудь дать мне какое-то направление, пожалуйста?

ответ

3

Вы хотите изменить способ отображения данных в своей таблице, а не изменять сами данные. Для этого вам нужно установить фабрику ячеек в столбце таблицы. Что-то вроде

TableView<Nepokretnost> table = new TableView<>(); 
TableColumn<Nepokretnost, Number> povrsinaCol = new TableColumn<>("Povrsina"); 
povrsinaCol.setCellValueFactory(cellData -> 
    new ReadOnlyDoubleWrapper(cellData.getValue().getPovrsina())); 

povrsinaCol.setCellFactory(tc -> new TableCell<Nepokretnost, Number>() { 
    @Override 
    protected void updateItem(Number value, boolean empty) { 
     super.updateItem(value, empty) ; 
     if (empty) { 
      setText(null); 
     } else { 
      setText(String.format("%0.2f", value.doubleValue())); 
     } 
    } 
}); 
Смежные вопросы