It seems that JTable may be better suited for what you are trying to do than just 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);
source share