1
編集可能な価格を提示する列の1つを持つJtableがあります。私は例外を取得セル値を更新しようとするたびにしかし:JTableでダブル・セルを編集するJavaスイング
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
次のように私の物のためのモデルは次のとおりです。AbstractTableModelにを拡張し、私のカスタムクラスで
public class Product{
private double price;
private String name;
private Icon pic;
public Product(String name, double price){
this.name= name;
this.price = price;
}
public void setPrice(double price){
this.price = price;
}
//other getters and setters
}
:
private ArrayList<Product> products;
//constructor and other methods
public void setValueAt(Object val, int row, int col) {
if (col == 2){
try{
double price = Double.parseDouble((String)val);
products.get(row).setPrice(price);
}
catch(Exception e){
}
fireTableCellUpdated(row, col);
}
}
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
@Override
public Object getValueAt(int rowNo, int column) {
Product item = products.get(rowNo);
switch(column){
case 0: return item.getPic();
case 1: return item.getName();
case 2: return item.getPrice();
default: return null;
}
}
価格を文字列に変更する必要がありますか?これを行う他の通常の方法はありますか? getColumnClassを削除すると価格の変更が無効になりますが、次に製品のPicを表示できないため、これは解決策ではありません。
あなたの 'getValueAt'メソッドを共有してください。 – rdonuk
理由がある理由double Price = Double.parseDouble((String)val); btw DefaulttTableCellEditorはObjectを返すことができます。このフォームの質問(質問のコードとコードに基づいています)は答えることはできません。 、ここで何度も同じ質問... – mKorbel
@rdonuk私はコードを更新しました。 mKorbelは、2倍に解析する必要がある単なる文字列値でユーザーが入力するすべてではありませんか? – cAMPy