# Java: JLabel text alignment

## What tabs don't work

The basic problem is that there is no fixed definition for tab, which more or less means move to the next tab position for the particular output device. It's mostly a historical feature that had a real hardware meaning (little metal "tabs" were inserted to stop the carriage).

In MS Word you can also move the tabs wherever you want. I use tab setting of 4 in the editor I use most frequently, but it used to be set a 3. Anyway, they surely didn't want to get into the mess of picking a given amount.

## Why spaces don't work

And it's also impossible to align things using spaces with JOptionPane's variable pitch font.

## One solution: HTML tables

One solution is to use HTML, a subset of which is allowed in JOptionPane. For example, to solve your problem.

    JOptionPane.showMessageDialog(null,
      "<html><table><tr><td>Name</td><td>Pieces</td><td>Pay</td></tr>"
      + "<tr><td>" + name + "</td><td>" + pieces + "</td><td>" + pay + "</td></tr>"
      + "</table></html>");

Of course, this requires knowing HTML, a good idea anyway. :-)

## Solution: `String.format(...)`

Another solution is to use the `String.format(...)` method that's in recent versions of Java.