Spacings And Carriage Returns

F

freesoft_2000

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
 
T

Tor Iver Wilhelmsen

freesoft_2000 said:
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.

Not necessary: What you are experiencing is a feature of HTML where
whitespace (spaces, tabs, linefeeds etc.) is compacted.

You need to tell the HTML renderer to respect whitespace and line
shifts, either using a <pre> element or through CSS properties.
 
F

freesoft_2000

Hi everyone,

Tor Iver Wilhelmsen, you said
-You need to tell the HTML renderer to respect
-whitespace and line
-shifts, either using a <pre> element.

How do i do this, because it seems that the default java html kit uses
<p>, </p> as its default for everything even carriage returns.

How do i tell the HTML renderer to respect these conditions.

Any help is greatly appreciated

Thank You

Yours Sincerely

Richard West
 
T

Tor Iver Wilhelmsen

freesoft_2000 said:
How do i do this, because it seems that the default java html kit uses
<p>, </p> as its default for everything even carriage returns.

You need to add a <pre> HTML element to the underlying document under
a given condition, e.g. a GUI event from a button or menu item. Then
you could pick up the contents and the selection, add "<pre>" before
the selection start and "</pre>" after selection end, then set that
back as the document contents.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top