Java中的右对齐

Java中的右对齐,java,Java,我试过寻找,但似乎找不到解决我的理由问题的办法。我希望所有的交易金额,以2位小数出现,都是正确的,但是,我尝试似乎没有工作。结果是: 交易温度; 字符串消息=”; 对于(int i=0;i

我试过寻找,但似乎找不到解决我的理由问题的办法。我希望所有的交易金额,以2位小数出现,都是正确的,但是,我尝试似乎没有工作。结果是:

交易温度;
字符串消息=”;
对于(int i=0;i
看来JTable可能比
String.format()更适合您正在尝试的工作

int rows=checkAccnt.size();//猜猜合适的方法名,但你明白了
int cols=3;//基于For语句中的列数
JTable table=新的JTable(行、列);
DefaultTableCellRenderer rightRenderer=新建DefaultTableCellRenderer();
设置水平对齐(JLabel.RIGHT);
table.getColumnModel().getColumn(3).setCellRenderer(rightRenderer);
交易温度;
字符串消息=”;
对于(int i=0;i
使用固定宽度字体(如注释中所建议)或具有更好对齐控制的不同小部件(如不同答案中所建议)的替代方法可能是将数字前面的空格字符替换为与数字宽度相同的空格字符(如果字体的数字宽度固定,屏幕截图似乎支持该宽度):


请参见

似乎您必须根据数字的长度更改十进制数之前的空格。我非常确定如何使用String.format though使用恒定宽度字体。Saka129说了什么,另外:我想您甚至不喜欢正确的对齐方式,而是对齐
点(否则,如果您有右对齐的数字,如“1.11”和“1.99”,则点不会对齐)@Azulflame知道如何通过其他方式做到这一点吗?@user3213337我做了一些研究并发布了一个答案。你能试试吗?如果你做了,它只是更新了。我不能真正测试它,因为我没有OP的全部代码。但我会据此进行编辑。如果你正确地证明了一列的合理性,你不需要使用空格填充。
    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);
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);
message += String.format("%-10d", temp.getTransNumber()).replace(' ', '\u2007');