Java: преобразование типов данных - PullRequest
1 голос
/ 21 июня 2011

Я работаю с JTable, данные ячеек которого содержатся в Object.Один столбец показывает число float.Я хочу, чтобы получить значение в float, ограничить десятичные разряды до 3, а затем я хочу перезагрузить правильные данные в ячейке, поэтому я хочу снова установить значение в ячейку.Проблема появляется в последнем преобразовании:

 private class CambioTablaMeasurementListener implements TableModelListener{

    public void tableChanged(TableModelEvent e){
        try{
            if(sendDataToDisp){
                TableModel model = (TableModel)e.getSource();
                float value = Float.parseFloat((String)model.getValueAt(e.getLastRow(), 1));
               // Now i want to limit to only 3 decimal places, so:

                double aux = Math.round(value*1000.0)/1000.0;
                value = (float) aux;
                Float F = new Float(value);

                // Now i want to load data back to the cell, so if you enter 0.55555, the cell shows 0.555. This Line gives me an exception (java.lang.Float cannot be cast to java.lang.String):
                model.setValueAt(F, e.getLastRow(), 1);

                // Here I'm getting another column, no problem here:
                String nombreAtributo = (String)model.getValueAt(e.getLastRow(), 0);
                nodoAModificar.setCommonUserParameter(nombreAtributo, value);

            }
           ...}

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Вы можете использовать DecimalFormat для отображения числа с плавающей запятой в заданном формате:

...
float value = Float.parseFloat((String)model.getValueAt(e.getLastRow(), 1));             
DecimalFormat dec = new DecimalFormat("#.###");
model.setValueAt(dec.format(value), e.getLastRow(), 1);
...
2 голосов
/ 21 июня 2011

Вам необходимо преобразовать Float экземпляр в String.

model.setValueAt(F.toString(), e.getLastRow(), 1);

или

model.setValueAt(String.valueOf(F), e.getLastRow(), 1); // preferred since it performs null check
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...