簡體   English   中英

阻止HTML JTextPane格式化文本輸入

[英]Prevent HTML JTextPane from formatting text input

我編寫了一個示例應用程序,其中包括一個JTextPane和一個打印出文本窗格內容的按鈕。 文本窗格的內容類型設置為“ 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>替換了換行符,但是文本窗格自動插入了自己的換行符。

如果有其他解決方案,我也可以嘗試使用這些解決方案,但是在大多數情況下,我希望能夠顯示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中運行時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM