2016-03-05 5 views
5

मैंने कोशिश करने की कोशिश की है लेकिन मुझे मेरी औचित्य समस्या का समाधान नहीं मिल रहा है। मैं सभी लेन-देन की रकम चाहता हूं, जो कि 2 दशमलव अंकों के साथ बदलती हैं, सही होने के लिए सभी को उचित ठहराया जा सकता है, हालांकि, मैं कोशिश नहीं करता कि कुछ भी काम करने लगता है।जावा में सही औचित्य

Java dialog with unaligned numbers

Transaction temp; 
    String message = ""; 
    for (int i = 0; i < checkAccnt.gettransCount(); i++) 
    { 
     temp = checkAccnt.getTrans(i); 
     message += String.format("%-10d", temp.getTransNumber()); 
     message += String.format("%-10d", temp.getTransId()); 
     message += String.format("%10.2f", temp.getTransAmount()) + '\n'; 
    } 
    JOptionPane.showMessageDialog(null, message); 
+0

ऐसा लगता है तुम लंबाई के अनुसार दशमलव संख्या से पहले खाली स्थान के परिवर्तन करने के लिए होता है कि संख्या का मुझे यकीन है कि String.format के साथ ऐसा कैसे करें – Azulflame

+5

निरंतर चौड़ाई फ़ॉन्ट का उपयोग करें। – saka1029

+0

क्या saka1029 ने कहा, और इसके अतिरिक्त: मुझे लगता है कि आपको सही औचित्य भी पसंद नहीं होगा, लेकिन '.' अंक का संरेखण (अन्यथा, यदि आपके पास" 1.11 "और" 1.99 "जैसी सही-सही संख्याएं थीं, तो अंक संरेखित नहीं होगा) – Marco13

उत्तर

3

एक वैकल्पिक से ऐसा करने के लिए कोशिश कर रहे हैं के लिए एक बेहतर फिट हो सकता है परिणाम यह रहा: फ़ॉन्ट (टिप्पणियों में सुझाए गए अनुसार) या बेहतर संरेखण नियंत्रण के साथ अलग-अलग विगेट्स (जैसा कि एक अलग उत्तर में सुझाया गया है) अंतरिक्ष वर्णों के साथ स्पेस वर्णों को प्रतिस्थापित करने के लिए हो सकता है जिसमें अंकों के समान चौड़ाई है (यदि फ़ॉन्ट अंक के लिए एक निश्चित चौड़ाई, स्क्रीनशॉट समर्थन करने के लिए लगता है जो है):

message += String.format("%-10d", temp.getTransNumber()).replace(' ', '\u2007'); 

देखें http://www.fileformat.info/info/unicode/char/2007/index.htm

+0

यह काम किया। धन्यवाद! –

1

ऐसा लगता है JTable एक निश्चित चौड़ाई का उपयोग करने के तुम सिर्फ String.format()

int rows = checkAccnt.size(); // guess as to the appropriate method name, but you get the idea 
int cols = 3;// based off of number of coloumns in the For statement 

JTable table = new JTable(rows, cols); 
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); 
rightRenderer.setHorizontalAlignment(JLabel.RIGHT); 
table.getColumnModel().getColumn(3).setCellRenderer(rightRenderer); 

Transaction temp; 
String message = ""; 
for (int i = 0; i < checkAccnt.gettransCount(); i++) 
{ 
    temp = checkAccnt.getTrans(i); 
    table.setValueAt(String.format("%-10d", temp.getTransNumber()), i, 0); 
    table.setValueAt(String.format("%-10d", temp.getTransId()), i, 1); 
    table.setValueAt(String.format("%10.2f", temp.getTransAmount()), i, 2); 
} 
JOptionPane.showMessageDialog(null, table); 
+1

पर" मोनोस्पेस्ड फ़ॉन्ट "के बारे में संबंधित प्रश्न भी देखें, मैं वास्तव में इसका परीक्षण नहीं कर सकता, क्योंकि मेरे पास ओपी का पूरा कोड नहीं है। लेकिन मैं तदनुसार संपादित करूंगा – Azulflame

+0

यदि आप एक कॉलम को सही-सही बना रहे हैं तो आपको पैडिंग के लिए रिक्त स्थान का उपयोग करने की आवश्यकता नहीं है। –

संबंधित मुद्दे