Можно ли включить пространственную обертку в JTextPane?Как включить пространственную привязку строк в JTextPane?
Использование JTextArea не является вариантом, потому что мне нужно стилить контент.
Можно ли включить пространственную обертку в JTextPane?Как включить пространственную привязку строк в JTextPane?
Использование JTextArea не является вариантом, потому что мне нужно стилить контент.
Это, как вы делаете JFrame по умолчанию с JTextPane и штриховой пленкой. Как сказал camickr, это поведение по умолчанию.
package test;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
/**
*
* @author floz
*/
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame mainFrame = new JFrame("test");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextPane field = new JTextPane();
field.setText("qds qljsd qsld qlskd qlkds fqlk sdkf qlskdfqlk sdlf qsld ql sdf qlskd fqks lqksjd f");
mainFrame.getContentPane().setLayout(new BorderLayout());
mainFrame.getContentPane().add(field,BorderLayout.CENTER);
mainFrame.setSize(200,200);
mainFrame.setVisible(true);
}
});
}
}
Вы можете добавить слушатель в документе JTextPane, что делает обертывание строки, как следует:
pane.getDocument().addDocumentListener(new DocumentListener()
{
@Override
public void insertUpdate(DocumentEvent e)
{
if(e.getOffset() >= pane.getSize().getWidth()/pane.getFont().getSize())
{
String str = pane.getText();
if(str.length() <= str.lastIndexOf(32))
{
try
{
e.getDocument().insertString(str.lastIndexOf(32), "\n", pane.getCharacterAttributes());
} catch (BadLocationException e1)
{
e1.printStackTrace();
}
}
}
}
@Override
public void removeUpdate(DocumentEvent e) {}
@Override
public void changedUpdate(DocumentEvent e) {}
});
Что делать, если размер рамки изменяется, что также приводит к изменению размера панели? Или что, если в текстовое поле вставлено несколько строк текста? Теперь разрыв жестко закодированных строк не позволит перенастроить текст. – camickr
@camickr: Ну, тогда он должен поместить некоторые из себя в это ?! В вопросе не упоминалось об изменении размера. Я просто дал ему базовое представление об этом. –
И поэтому, как правило, хорошей практикой является отделить модель от вида. – Sharcoux
Это поведение по умолчанию JTextPane. То есть, если целое слово не будет вписываться в строку, оно будет завершено в предыдущем пространстве. Если у вас возникла проблема, отправьте свой [SSCCE] (http://sscce.org/), который демонстрирует проблему. – camickr