2012-11-28 10 views
3

我将一个CSV文件导入DefaultTableModel,其中一列格式化为双精度,到目前为止效果非常好。但是如果我在JTable中编辑此列中的单元格(双精度),那么此单元格不再是双精度。现在它是一个字符串。 如何更改TableModel中编辑的单元格的类型? 我知道我可以解析一个字符串来加倍double value = Double.parseDouble(str);,但是如何确保编辑单元格后发生这种情况?编辑TableModel中的单元格后,Java字符串,而不是double

我需要一个新的TableModel -class,如:

class myTableModel extends DefaultTableModel { }

感谢您的帮助。

回答

4

例如

@Override 
    public Class<?> getColumnClass(int c) { 
     if (c == 1) { 
      return Short.class; 
     } else { 
      return Integer.class; 
     } 
    } 

import javax.swing.*; 
import javax.swing.table.*; 

public class RemoveAddRows extends JFrame { 

    private static final long serialVersionUID = 1L; 
    private Object[] columnNames = {"Type", "Company", "Shares", "Price"}; 
    private Object[][] data = { 
     {"Buy", "IBM", new Integer(1000), new Double(80.50)}, 
     {"Sell", "MicroSoft", new Integer(2000), new Double(6.25)}, 
     {"Sell", "Apple", new Integer(3000), new Double(7.35)}, 
     {"Buy", "Nortel", new Integer(4000), new Double(20.00)} 
    }; 
    private JTable table; 
    private DefaultTableModel model; 
    private javax.swing.Timer timer = null; 

    public RemoveAddRows() { 
     model = new DefaultTableModel(data, columnNames) { 

      private static final long serialVersionUID = 1L; 

      @Override 
      public Class getColumnClass(int column) { 
       return getValueAt(0, column).getClass(); 
      } 
     }; 
     table = new JTable(model);   
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
     JScrollPane scrollPane = new JScrollPane(table); 
     add(scrollPane);   
    } 



    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       RemoveAddRows frame = new RemoveAddRows(); 
       frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 
+0

善意提醒:在回答中的代码应该是一个SSCCE - 在你的所有不相关的礼仪只会趋向混淆新手;-) – kleopatra

+0

@mKorbel:非常感谢你!这是一个聪明的解决方案。 – saduino

+1

@mKorbel:对于[示例](http://stackoverflow.com/a/13542145/230513),请考虑静态工厂或盒装常量。 – trashgod

相关问题