Проблема: включение переноса в JTextArea должно переносить строку; но иногда это не удается.
Ожидание: «ghijjj» переносится на следующую строку.
Что происходит вместо:
JTextArea не будет оборачивать "ghijjj", вместо этого он едва показывает 'g', а 'hijjj' будет за пределами экрана (область просмотра).
Подробности :
Среда выполнения OpenJDK AdoptOpenJDK (сборка 11.0.7 + 10)
ОС: Windows 10 v 1909
SSCCE:
import javax.swing.*;
import java.awt.*;
public class ScrollableTextArea {
public static void main(String[] args) {
JFrame frame = new JFrame("JTextArea");
frame.setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setSize(400, 300); //edit:per suggesstion
JTextArea bodyArea = new JTextArea(10, 30);
bodyArea.setLineWrap(true);
bodyArea.setWrapStyleWord(true);
JScrollPane bodyScroller = new JScrollPane(bodyArea);
bodyScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.add(bodyScroller);
bodyArea.setText("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b c d e f ghijjj");
frame.pack(); // edit:per suggesstion
frame.setVisible(true);
}
}
Визуально :
![text going out of JTextArea](https://i.stack.imgur.com/04YlZ.png)
Я попытался добавить границы, думая, что проблема связана с JScrollPane, но это не так. Так это ошибка связана с алгоритмом переноса слов, который использует JTextArea? А может проблема с Java на Windows? И есть ли какое-нибудь решение?
ОБНОВЛЕНИЯ :
- Он отлично работает в Java (TM) SE Runtime Environment (сборка 1.8.0_251-b08) (хотя окно и размер шрифта меньше, чем в JDK11)