I am building a Java Swing GUI that displays a long string of characters in a JTextPane. To enforce a line wrap I have added newline characters after 70 characters to display the sequence on multiple lines of the textpane. Despite using the justify StyleConstant the text looks jagged on the right. Is there a way of straightening the text on the right side of the text pane?
Minimal example code:
import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import java.awt.*;
public class Example {
JFrame frame;
JTextPane textPane;
Example() {
setComponents();
}
void setComponents(){
frame = new JFrame("Example");
textPane = new JTextPane();
frame.setMinimumSize(new Dimension(200, 300));
frame.getContentPane().add(textPane);
addSequence();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
}
void addSequence() {
String seq = "TAATCATAACAGGAAGGGGATAAAAAATAATGAATAAACAGGAAAACATTCAGTTTTAAGATACCTCAAA\n" +
"AGTTATTCTTCTGTAAATGTTCCTGTATTCCAATGGATTGTAGACTAGGACTGAGACATTAATCATCTGG\n" +
"ATTTCAAAATAAAACCTAGACTCAGTATTTGTTCCTCTTCCTTCTTCAGGTAGGAAGGCTACCCGGGGCA\n" +
"TTTCATCACAGGAGCTAGGGCAGGGGCTTTCAGGTGAGGAGCAGGATGGGGCCTCTGGGGGTGTGACTGC\n" +
"TGGGGACATAGCCACAGGGGATTACCTTCTTCTCACTCCTCACCTCCAGATTTGCACTGGGGCAAAAGGA\n" +
"GGATTAGGGTGTGTGGATTGCGGGGAGATAATAGTAGAAG";
textPane.setContentType("text/html");
StyledDocument doc = textPane.getStyledDocument();
Style style = textPane.addStyle("aStyle", null);
StyleConstants.setAlignment(style, StyleConstants.ALIGN_JUSTIFIED);
try {
doc.insertString(doc.getLength(), seq, style);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Example();
}
}
Current output:
Desired output:

