0

Hi everyone,

I currently have a JTextPane using a html document and i am trying to serialize the html document contained in the JTextPane to the disk but i have run into some problems.

One problem lets say for example if i were to press the space bar five times and then type some text into the JTextPane and serialize it, everything seems alright except that when i read back the html document the space where i had pressed for five times has dissappeared and the text that i typed in is just left justified.

Another problem i have lets say for example if i were to press the carriage return five times and then type some text into the JTextPane and serialize it, everything seems alright except that when i read back the html document the carriage returns where i had pressed for five times has dissappeared and the text that i typed in is just placed at the top of the document in the JTextPane.

Why this is happening i am not sure but i am providing a compilable example for you guys to see what actually the problems that i am currently facing.

Here is the compilable example.

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.text.html.*;

public class JHTML implements ActionListener

{

	JFrame fr = new JFrame ("Frame");

	JLabel Label1 = new JLabel("Label1                            ", SwingConstants.RIGHT);

	JButton Button1 = new JButton("Load");
	JButton Button2 = new JButton("Save As");

	JFileChooser FileChooser1 = new JFileChooser(); 
	JFileChooser FileChooser2 = new JFileChooser();

	JTextPane TextPane1 = new JTextPane();

	StyleSheet ss = new StyleSheet();

	HTMLDocument htmldoc = new HTMLDocument(ss);

	JScrollPane ScrollPane1 = new JScrollPane(TextPane1, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 
	ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

	HTMLEditorKit htmlkit = new HTMLEditorKit();     

	Dimension Size1 = new Dimension();

	String SF = "";

	public void initialize ()
	{ 
		Container pane = fr.getContentPane();
		pane.setLayout(new FlowLayout());
		fr.setSize(250,300);
		fr.setLocation(300,300);
		fr.setBackground(Color.lightGray);
		TextPane1.setEditorKit(htmlkit);
		htmldoc = (HTMLDocument)htmlkit.createDefaultDocument();
		ss = htmldoc.getStyleSheet();
		TextPane1.setDocument(htmldoc);

		Size1.width = 500;
		Size1.height = 300;
		ScrollPane1.setPreferredSize(Size1);
		pane.add(ScrollPane1);
		pane.add(Button1);
		pane.add(Button2);
		pane.add(Label1);

		fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Button1.addActionListener(this);
		Button2.addActionListener(this);
		fr.pack();
		fr.setVisible(true);
	}

	public void open ()
	{


		if(FileChooser1.showOpenDialog(fr) != JFileChooser.APPROVE_OPTION)
		{
			return;
		}

		try
		{
			File file1 = FileChooser1.getSelectedFile();
			SF = file1.toString();
			FileInputStream in = new FileInputStream(SF);
			htmldoc = (HTMLDocument)htmlkit.createDefaultDocument(); 
			htmlkit.read(in, htmldoc, 0);
			ss = htmldoc.getStyleSheet();
			TextPane1.setDocument(htmldoc);
			in.close();
		}

		catch (Exception e)
		{
			Label1.setText("A document reading error has occured");
		}

	}

	public void saveas ()
	{
		if(FileChooser1.showSaveDialog(fr) != JFileChooser.APPROVE_OPTION)
		{
			return;
		}

		try
		{
			File file2 = FileChooser1.getSelectedFile();
			SF = (file2.toString() + ".html");
			FileOutputStream out = new FileOutputStream(SF);
			htmlkit.write(out, htmldoc, 0, htmldoc.getLength());
			out.close();
		}

		catch (Exception e)
		{
			Label1.setText("A document writing error has occured");
		}

	}

	public void actionPerformed(ActionEvent event)
	{
		JComponent b = (JComponent)event.getSource();

		if(b == Button1)
		{
			open();
		}

		else if(b == Button2)
		{
			saveas();
		}


	}
	public static void main(String args[])
	{
		JHTML a = new JHTML(); 
		a.initialize();
	}                   
}

My only idea i guess is that i must be serializing the document wrongly, but i tried to yahoo but came up with nothing.

I hope someone knows why this is happening as already i am out of ideas.

Any help is greatly appreciated

Thank You

Yours Sincerely

Richard West

2
Contributors
1
Reply
2
Views
10 Years
Discussion Span
Last Post by jwenting
0

when parsing html browsers will remove leading and trailing whitespace. That's part of the required behaviour for them.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.