Я написал пример приложения, состоящего из JTextPane
и кнопки, которая печатает содержимое текстовой панели. Тип содержимого текстовой области установлен в «text/html».Запретить HTML JTextPane от форматирования ввода текста
Когда я ввожу текст и распечатываю его на консоль, текст автоматически завернут.
Например, если следующий вход:
Watercress shallot radish chickweed bitterleaf bush tomato salad garlic beet greens black-eyed pea green bean salsify bell pepper. Catsear celery green bean broccoli rabe spring onion tatsoi prairie turnip wattle seed cucumber burdock. Chickweed cucumber chickpea bush tomato wakame taro fava bean arugula catsear azuki bean.
Выход выходит как таковой
Watercress shallot radish chickweed bitterleaf bush tomato salad garlic
beet greens black-eyed pea green bean salsify bell pepper. Catsear celery
green bean broccoli rabe spring onion tatsoi prairie turnip wattle seed
cucumber burdock. Chickweed cucumber chickpea bush tomato wakame taro fava
bean arugula catsear azuki bean.
Есть ли способ, чтобы сохранить формат входного текста? Я планирую хранить вход в базе данных, поэтому я заменяю символы новой строки <br>
, но текстовая панель автоматически вставляет свои собственные новые строки.
Если есть альтернативные решения, я могу попробовать их также, но по большей части я хочу иметь возможность отображать HTML, позволяя пользователям изменять ввод.
Вот код для образца. Вы должны иметь возможность просто компилировать и запускать его.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
public class TextPaneTest extends JFrame {
private JTextPane textPane = null;
public static void main(String args[]) {
new TextPaneTest();
}
public TextPaneTest() {
// Main panel
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
// Panel holding text
JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
// Text pane
textPane = new JTextPane();
textPane.setContentType("text/html");
// Button
JButton button = new JButton();
button.setText("Print Text");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String text = textPane.getText();
text = text.substring(text.indexOf("<body>") + 6, text.indexOf("</body>"));
System.out.println(text);
}
});
textPanel.add(textPane);
panel.add(textPanel, BorderLayout.CENTER);
panel.add(button, BorderLayout.SOUTH);
// Add everything to the frame
this.add(panel);
this.setSize(1000, 500);
setVisible(true);
}
}
Итак, если вы намерены вставлять новые строки программным способом, почему бы не использовать 'JTextArea' или' JTextPane' значение 'text/plain'? –
Извините, если есть какая-то путаница. Новые строки не вводятся программно; любой, который вставлен пользователем, преобразуется в '
' 's. – MxyL
* «Новые строки не вставляются программно; ..» * ОК, но это не меняет мой совет. Просто поменяйте новые строки, вводимые пользователем, для того, что действительно необходимо. –