Интересная проблема, может быть какой-то изощренный метод, использующий интерфейс Document; но в основном создайте два бок о бок JTextPanes (). Вы можете потратить много времени, пытаясь автоматически измерить текст, чтобы он разделился на две части, но я бы просто попытался найти границу абзаца в середине, которая примерно уравновешивает количество непробельных символов. Если текст уже структурирован, вы можете посмотреть документ
int findSplitBoundary(String x) {
int midPoint = x.length()/2;
for (int i = 0; i < Math.min(x.length()/2 - 2, 100); i++) {
if (x.startsWith(".\n", midPoint - i)) return midPoint- i;
if (x.startsWith(".\n", midPoint + i)) return midPoint- i;
}
return midPoint;
}
Затем добавьте ваш текст на панели так:
JTextPane column1 = new JTextPane();
JTextPane column2 = new JTextPane();
split=findSplitBoundary(longText);
column1.setText(longText.substring(0, split));
column2.setText(longText.substring(split));
add(column1, BorderLayout.WEST);
add(column2, BorderLayout.EAST);
Также вам может повезти, глядя на HTMLEditorKit, хотя я не знаю, предлагает ли HTML вид разделения текста.
column1.setEditorKit(new HTMLEditorKit());