2016-03-05 16 views
5

私は探してみましたが、私の正当化問題の解決策を見つけることができないようです。私はすべての取引金額を2桁の数字で表示して、すべての正当な権利が欲しいと思っていますが、私が試したことは何も動作していないようです。これが結果です:Javaの右寄せ

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'); 

は、あなたの長さに応じて10進数に前に空白を変更しなければならないようだ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

本当にテストできません。私はOPのコード全体を持っていないので。しかし、私はそれに応じて編集します – Azulflame

+0

1つの列を右揃えにする場合は、パディングにスペースを使用する必要はありません。 –

関連する問題