gpt4 book ai didi

java - 防止 HTML JTextPane 设置文本输入格式

转载 作者:行者123 更新时间:2023-12-01 14:03:23 25 4
gpt4 key购买 nike

我编写了一个示例应用程序,其中包含 JTextPane以及一个打印文本 Pane 内容的按钮。文本 Pane 的内容类型设置为“text/html”。

当我输入一些文本并将其打印到控制台时,文本会自动换行。

例如,给定以下输入:

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> ,但文本 Pane 会自动插入自己的换行符。

如果有替代解决方案,我也可以尝试这些解决方案,但在大多数情况下,我希望能够显示 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);
}
}

最佳答案

    textPane.setText("<html><head><style type='text/css'>"
+ "body{white-space:nowrap;}"
+ "</style></head><body>");

JScrollPane scrollPane = new JScrollPane(textPane);
scrollPane.setHorizontalScrollBarPolicy(
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//Remove: textPanel.add(textPane);
textPanel.add(scrollPane);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

HTML CSS 删除了换行。仍然有一个水平滚动条。此外,您可能可以使用 EXIT_ON_CLOSE 尤其是在 IDE 中运行时。

关于java - 防止 HTML JTextPane 设置文本输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com