当前位置: 首页 > 知识库问答 >
问题:

包含HTML内容的JTextPane中缺少空格/表格

通令
2023-03-14

我有两个不同的JTextPanes,第一个是不同线程发送消息的日志。在html文件中有保存的会话,当用户加载它们时,这些文件被用作第二个JTextPane的内容。这两个JTextPanes都具有html内容类型。

表格和空格还在。

表格和空格都不见了。我尝试使用 而不是简单的空格,但结果是一样的。

第二个JTextPane的代码:

    //settings
    eventLogHistory = new JTextPane();
    eventLogHistory.setEditable(false);
    eventLogHistory.setName("eventLogHistory");
    eventLogHistory.setContentType("text/html");
File f=new File(directory+"eventlog.html");
if(f.exists()) 
{
    Scanner scan = new Scanner(f);
    String strtmp=new String();

    strtmp=scan.nextLine();
    strbld.append(strtmp+"\n");

    while(scan.hasNextLine()) 
    {
        strtmp=scan.nextLine();
        strbld.append(strtmp+"\n");
    }
    scan.close();

    getEventLogHistory().setText(strbld.toString());            
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.DefaultCaret;

public class TextPaneWithHTML
{
    public TextPaneWithHTML()
    {
        final JFrame frame = new JFrame("JTextPane with HTML content");

        final JTextPane eventLogHistory = new JTextPane();
        eventLogHistory.setEditable(false);
        eventLogHistory.setName("eventLogHistory");
        eventLogHistory.setContentType("text/html");
        eventLogHistory.setForeground(Color.BLACK);

        JScrollPane messageTextScrollPane= new JScrollPane( eventLogHistory );
        messageTextScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

        DefaultCaret caretMessageText = (DefaultCaret)eventLogHistory.getCaret();
        caretMessageText.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

        final JFileChooser fc = new JFileChooser();

        JButton loadButton = new JButton("Load content");
        loadButton.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) 
            {
                StringBuilder strbld=new StringBuilder();

                int returnval=fc.showOpenDialog(frame);

                if (returnval == 0) 
                {                   
                    File f = fc.getSelectedFile();
                    try 
                    {
                        if(f.exists()) 
                        {
                            Scanner scan = new Scanner(f);
                            String strtmp=new String();

                            while(scan.hasNextLine()) 
                            {
                                strtmp=scan.nextLine();
                                strbld.append(strtmp+System.getProperty("line.separator"));

                            }
                            scan.close();

                            eventLogHistory.setText(strbld.toString());         
                        }           
                    } 
                    catch (IOException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }   
        });



        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
        frame.setSize(1200, 700);
        frame.getContentPane().add(messageTextScrollPane, BorderLayout.CENTER);
        frame.getContentPane().add(loadButton, BorderLayout.NORTH);

        frame.setVisible(true);

    }

    public static void main(String[] args)
    {
        new TextPaneWithHTML();
    }

}
<html>
 <head> 
 <style type="text/css"> 
.red{ color:#ff0000; }.blue{ color:#0000ff; }.green{ color:#33ff33; }.CLIgreen{ color:#02f002; }.khaki{ color:#8f8fff; }.white{ color:#ffffff; }.yellow{ color:#ffff00; }.pink{ color:#ff00ff; }.grey{ color:#d3d3d3; }.orange{ color:#ffc800; }p{ font-family: arial; font-size: 10; font-weight: bold; margin:0; } 
pre {
display:inline
}
 </style> 
 </head> 
<body>

<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111111]  [11111111]:  [cp1]   </font><font class="grey"><pre>OFFLINE          </pre></font><font class="white">  ----  </font><font class="green">SLAVE</font><font class="blue"></font></p>
<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111111]  [11111111]:  [cp2]   </font><font class="grey">OFFLINE          </font><font class="white">  ----  </font><font class="blue">MASTER</font>      
</p>
<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111111]  [11111111]:  [Clock] </font><font class="grey">OFFLINE          </font><font class="white">  ----  </font><font class="green">LOCKED</font><font class="blue"></font></p>
<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111112]  [11111112]:  [cp3]   </font><font class="grey">OFFLINE          </font><font class="white">  ----  </font><font class="green">SLAVE</font><font class="blue"></font></p>
<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111112]  [11111112]:  [cp4]   </font><font class="grey">OFFLINE          </font><font class="white">  ----  </font><font class="yellow">PASSIVE</font><font class="blue"></font></p>
<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111112]  [11111112]:  [cp2]   </font><font class="grey">OFFLINE          </font><font class="white">  ----  </font><font class="blue">MASTER</font>      
</p>
<p><font class="white">[2014.11.17., 12:38:10]:  </font><font class="khaki">[TN-11111112]  [11111112]:  [cp1]   </font><font class="grey">OFFLINE          </font><font class="white">  ----  </font><font class="blue">MASTER</font>      
</p>

  </body>
</html>

共有1个答案

甄阿苏
2023-03-14

..具有html内容类型..表格和空格都不见了。

是的。那就行了。

除非相关文本被包装在

中以指示预先格式化的文本部分,否则空格将被规范化,制表符将被忽略。
 类似资料:
  • 我正在尝试从一个具有中文字符的html创建pdf,在这个我有奇怪的概率,来自html的具有中文字符的行并不完全显示在从中生成的pdf中。 以下是我的html: 下面是我的itext渲染器代码: 由于我使用了字体解析器和添加字体,中文字符显示....但是pdf显示缺少内容....该行的最后几个字符(即“上海”中的“AI”和下一个“CN、、、、、、、、、、、、、、、、、、、、、、、、、、“)不可见..

  • 我正在为授权服务器编写一个测试,测试oauth响应的内容类型是JSON。授权服务器使用的是< code > spring-security-oauth 2 2 . 0 . 1 . 4 . release ,我的JUnit测试使用的是< code >放心2.9.0。 当我运行这个测试时,我遇到了这个失败。 因此,<code>org.apache.http.entity的值。ContentType</

  • 我正在尝试为某个特定项目实现一个只查看HTML窗格。我正在使用来呈现HTML,内容类型为。我在我的输入HTML中有表格,所以为了给这些表格加上边框,我考虑使用css样式,但不幸的是没有成功。 如果我把边框属性作为表本身的一部分,那么它可以工作,但不能使用css样式。 下面是我创建的用于重新创建问题的示例代码。content1不会为我的表创建边框,但content2会创建边框。我想使用content

  • 我有一个请求我的服务器,响应是一个类型,如下所示: 我通过如下方式设置改装请求: 并准备如下请求: 但是,始终无法获得响应的代码,并且该代码是”。 如何获得html响应? 非常感谢。

  • 本文向大家介绍JS获取表格内指定单元格html内容的方法,包括了JS获取表格内指定单元格html内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS获取表格内指定单元格html内容的方法。分享给大家供大家参考。具体如下: 下面的代码先通过表格对象的rows获得指定的行的所有单元格数组,然后定位指定的单元格,通过单元格的innerHTML属性获得单元格的html内容 希望本文所述对

  • 问题内容: 我想从Android应用程序执行ffmpeg,非常像这里所述:将FFmpeg与Android-NDK结合使用。 执行以下命令可以正常工作: 要么 但是,当输入或输出文件名包含空格时,ffmpeg失败,并显示“找不到文件”错误: FFMPEG对于包含空格的文件也失败,但引用如下: 如何正确将包含空格的文件名传递给ffmpeg命令? 问候, 问题答案: 我终于明白了。我忘记了一种可能性,而