में डबल मानों को छंटनी मुझे इस से संबंधित कुछ प्रश्न मिले हैं लेकिन मुझे अपने मुद्दे पर एक आसान समाधान नहीं मिला है।जेटीबल
मुझे अपने जेटीबल प्रकार को डबल मान सही तरीके से बनाने का कोई तरीका नहीं मिल रहा है।
मैं AbstractTableModel बढ़ाया एक कक्षा सरणी प्राप्त करने और उचित प्रकार वापसी प्रति स्तंभ के लिए: अपने कस्टम JTable निर्माता में
class TableModelMod extends AbstractTableModel{
private ArrayList data;
private String [] headers;
private Class [] types;
TableModelMod(String [] heads, ArrayList datas, Class [] classes){
headers = heads;
data = datas;
types = classes;
}
...
@Override public Class getColumnClass(int c){
if (c > types.length - 1)
return null;
else
return types[c];
}
...
और फिर:
TableRowSorter<TableModelMod> sorter = new TableRowSorter<TableModelMod>((TableModelMod)getModel());
लेकिन तब मैं जब जोड़ने यह त्रुटि प्राप्त पंक्तियां:
java.lang.IllegalArgumentException: Cannot format given Object as a Number
यह DecimalFormat.format(Object number, StringBuffer toAppendTo, FieldPosition pos)
विधि में विफल रहता है कि एसी सबसे संख्यात्मक प्रकार cepts लेकिन डबल।
यदि मैं डबल कॉलम के लिए एक और कक्षा का उपयोग करता हूं तो मुझे कोई त्रुटि नहीं मिलती है लेकिन फिर भी सॉर्टिंग अपेक्षा के अनुसार काम नहीं करती है। मैं अलग संख्यात्मक वर्गों के साथ करने की कोशिश की, लेकिन कोई भी सही ढंग से युगल सॉर्ट करने के लिए लग रहे हैं:
@Override public Class getColumnClass(int c){
if (c > types.length - 1)
return null;
else if (types[c] == Double.class)
return Number.class;
else
return types[c];
}
मुझे यकीन है कि अगर मैं मैं क्या जरूरत है एक कस्टम RowSorter, एक कस्टम कीजिए, या दोनों को लागू करने की है नहीं कर रहा हूँ।
क्या कोई मुझे इस सरल तरीके से ठीक करने के तरीके पर मार्गदर्शन कर सकता है?
धन्यवाद बहुत अच्छा और सबसे अच्छा संबंध है।
संपादित: हल
यह बताने के लिए जहां समस्या थी काफी शर्मनाक है।
ऑब्जेक्ट [] पंक्तियों वाली ऐरेलिस्ट को getObject (int) या getDouble (int) के बजाय getString (int) का उपयोग करके डेटाबेस परिणामसेट से भर दिया गया था, इसलिए मान को रेंडरर द्वारा डबल के रूप में उपयोग नहीं किया जा सका। यह अजीब बात है कि उसने कॉलम क्लास के रूप में इंटीजर या नंबर का उपयोग करके अपवाद नहीं दिए, लेकिन इसे स्ट्रिंग के रूप में क्रमबद्ध किया जा रहा था। मैं गलत वर्गों में एक मुद्दे की तलाश में था क्योंकि मुझे विश्वास था कि मेरे ऐरेलिस्ट में केवल ऑब्जेक्ट्स हैं।
धन्यवाद आपके उदाहरणों के लिए बहुत कुछ, मुझे देखकर मैंने देखा कि मेरे युगल वास्तव में स्ट्रिंग्स थे और फिर मुझे पता चला कि रूपांतरण कहां हो रहा था।
आप अपने प्रश्न से समाधान को हटाने और एक जवाब के रूप में जोड़ना चाहिए। – murgatroid99