Based on the this image

I would suggest the problem you're having is the fact that the font is a variable width font, meaning that each character has it's own width (so 1 is smaller the 2).
In this case, you would probably be better of using a GridLayout or GridBagLayout
For example...

JFrame frame = new JFrame("Testing");
frame.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets = new Insets(4, 4, 4, 4);
gbc.anchor = gbc.WEST;
frame.add(new JLabel("12345678"), gbc);
gbc.gridx++;
frame.add(new JLabel("-12,231"), gbc);
gbc.gridy++;
gbc.gridx = 0;
frame.add(new JLabel("1234"), gbc);
gbc.gridx++;
frame.add(new JLabel("-123.000"), gbc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Or if that's just a little too much, you could just try formating the text as HTML...

JFrame frame = new JFrame("Testing");
frame.setLayout(new BorderLayout());
StringBuilder sb = new StringBuilder(128);
sb.append("<html><table>");
sb.append("<tr><td>12345678</td>-12,231<td></tr>");
sb.append("<tr><td>1234</td>-123.000<td></tr>");
sb.append("</table></html>");
frame.add(new JLabel(sb.toString()));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Or just use a JTable
JTablefor this!