Search code examples
javaswingjlabeljtextareajtextpane

Multi line label/area/pane in Java with Justified text


I have an interesting task. Consider a String contentwith unknown length. I'd like to display content with a Font font with Justified text. I need to know what height this would take up if I specify the width. I want to display this text in the middle of the screen but it must have a width of width.

Hence, I would like to do something such as the following.

//create a JTextPane or JTextArea
pane.setText(content);
pane.setFont(font);
//set the width of the pane here
//get the height of the full text block if its justified
pane.setLocation(screenWidth/2 - width/2, screenHeight/2, height/2);

How can I do this?


Solution

  • Normally, justification is done the other way around.

    The text has a fixed height, and you adjust the width of the text in one of the following ways:

    • Add spaces between the words. Easier, but not visually appealing.
    • Add space between the letters. This is called kerning.

    If you adjust the height so that the width is correct, every line in your text will have a different height.