Следующий SSCCE позволяет экспериментировать с обоими настройками. Здесь вы можете видеть, что использование setWrapStyleWord
не имеет эффекта, если вы не вызываете setLineWrap
. Это также описано в javadoc от setWrapStyleWord
.
Лучшие результаты для читаемой формы устанавливают оба значения в true.
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class TextAreaDemo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame testFrame = new JFrame("TestFrame");
final JTextArea textArea = new JTextArea(15, 65);
testFrame.add(new JScrollPane(textArea));
final JCheckBox wordWrap = new JCheckBox("word wrap");
wordWrap.setSelected(textArea.getWrapStyleWord());
wordWrap.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
textArea.setWrapStyleWord(wordWrap.isSelected());
}
});
testFrame.add(wordWrap, BorderLayout.NORTH);
final JCheckBox lineWrap = new JCheckBox("line wrap");
lineWrap.setSelected(textArea.getLineWrap());
lineWrap.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
textArea.setLineWrap(lineWrap.isSelected());
}
});
testFrame.add(lineWrap, BorderLayout.SOUTH);
testFrame.pack();
testFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
testFrame.setVisible(true);
}
});
}
}
Там еще немного, вы не говорили нам: вы звоните 'setLineWrap (истина)' на вашем JTextArea? Я не вижу, чтобы это было опубликовано где угодно. Вы разместили свой JTextArea внутри JScrollPane? Правильно ли вы используете менеджеры компоновки и избегаете использования нулевого макета и абсолютного позиционирования? –
Я бы даже пошел дальше HFOE, размещение трех строк кода не является доказательством проблемы или решения. Только [SSCCE] (http://sscce.org) действительно поможет вам или поможет найти решение для вас. Первое, что вам нужно сделать, это отказаться от этого вызова: 'text.setPreferredSize (новый размер (getPreferredSize());'. Это просто ищет проблемы ... (и, кстати, вызов конструктора копирования Dimension абсолютно не нужен) –
спасибо Hovercraft Full OF Eels Я не использовал метод setLineWrap(). Он решил мою проблему – Alfred