Viewing a HTML document in my Java program

Hi,
My Java program has a JTextPane that can display plain text or HTML documents. This program can mark up certain parts of the document to draw the user's attention.
However, I am having problems when it comes to marking up some of the HTML documents. When they are first loaded onto the JTextPane, they appear fine. When I then run the method to apply the mark up styles, I notice that the text turns the same color as the background after a certain point - making it impossible to see the document or markup.
The HTML (or text) document on display is made into a StyledDocument. And this is how the View for the HTML documents is created:
HTMLEditorKit htmledkit = new HTMLEditorKit();
ViewFactory myHTMLViewFactory = htmledkit.getViewFactory();
return myHTMLViewFactory.create(elem);
Note that elem is an Element -.-
- I tried modifying the color tags in the HTML document, but even when I made the text black and the background white, the text still goes white. If it's a black background, the text goes black, etc. The markup style is actually trying to turn parts of the text red - and it works almost all of the time, apart from these certain documents.
- I then tried applying my own style whenever a HTML document is loaded in, in the hope that I could force the background white and text black, regardless of the tags:
MutableAttributeSet att = new SimpleAttributeSet();
StyleConstants.setForeground(att,Color.black);
StyleConstants.setBackground(att, Color.white);
doc.setCharacterAttributes(0, doc.getLength(), att, false);
The resulting document display kept the original HTML background color, but wherever there was text it looked like someone had run a highlighter over it to change the background white and text black. Kinda ugly! And it still didn't work - come markup time this style was ignored after a certain point.
- This is one of the HTML documents that causes the problem:
<html>
<head>
     <link rel="STYLESHEET" type="text/css" href="mystyle.css">
     <title>My Document</title>
</head>
In the body tag:
<table>
table here... this displays fine
</table>
And here is the problem point:
<table width=100% cellspacing=0 cellpadding=0>
<tr>
<td>
<table width=100% cellspacing=0 cellpadding=0 style="padding: 3px; padding-top: 6px; padding-bottom: 6px;">
<tr>
<td width=100% style=" padding-left: 6px; padding-right: 6px;">
<table class=pane cellpadding=0 cellspacing=0>
<tr>
<td width=100% class=panetitlebox align=Center >
This is the last text that gets displayed! After this sentence, text goes same color as background.
</td>
</tr>
<tr height=100% valign=top>
<td class=panebox colspan=2 align=Left style="padding: 0px; border: solid 1px; border-top: none;">
<table width=100% cellspacing=0 cellpadding=0>
<tr>
<td class=content align=Left style="padding: 4px; background: transparent;">
<b>Bold text that doesn't show</b> More text that doesn't show
And so on....
In the header tag of another HTML document that has the same problem, it says it is HTML version 4.0. I have looked up the Java API and found that the javax.swing.text.html package is still 'migrating' towards HTML 4.0 and only supports HTML version 3.2. (Even in the API for Java 1.5 beta, although I use Java 1.4.2)
So I assume that Java just can't handle my documents! I also think that most of these HTML documents were generated by a program (I think I saw Frontpage in one of the document's meta tags), because when I make my own HTML it doesn't have the problem.
But it would be nice if my Java program can support these documents, so does anyone have any suggestions as to how I could get these documents to display properly once I apply mark up styles?
If I haven't explained something properly, I will clarify as it is a complicated program, and I've been driving myself crazy with this problem for several days!

I was looking through the HTML document removing pieces of code to see where the problem was. I removed all code relating to styles, alignment, width, padding etc, with no luck. The document has several tables, many of them nested, so I added some comments to see where each started and ended. After I added the comments, I checked the document in my Java program again, ran the mark up styles, and it suddenly worked! So I removed each comment one by one, checking each time, until I found the one that made it work. I then tried typing in the same spot, adding an extra space, moving the <tr> tag onto the same line, but only the HTML comment made it work. Here is the part of the document where I added the comment (it's in bold)
This is the last text that gets displayed! After this
sentence, text goes same color as background.
</td>
</tr>
<tr height=100% valign=top>
<td class=panebox colspan=2 align=Left style="padding:
0px; border: solid 1px; border-top: none;">
<table width=100% cellspacing=0 cellpadding=0> <!-- This comment makes the document display fine after markup -->
<tr>
<td class=content align=Left style="padding: 4px;
background: transparent;">
<b>Bold text that doesn't show</b> More text that
doesn't showDoes anyone know WHY this is happening? It's so weird. I thought if it was something more obvious, like styles, I could just get my program to remove them when reading in the document. But added HTML comments????
Thank you ^_^

Similar Messages

  • HTML document feedback to java

    hi,
    I am trying to load a HTML document into JEditorPane (for viewing only). The HTML document contains a TextField and a Button, is there a way to notify my application whenever the Button is pressed?
    Thank You!

    Wow, it must take quite some time to figure this out:
    http://forum.java.sun.com/thread.jsp?thread=414212&forum=57&message=1885273

  • Opening a Word Document with a Java program in Windows

    When running a Java program in Windows, is it possible to have a button where when it is clicked it will open a Word document?
    If so, is it hard and can someone tell me how to do it??
    Thanks

    try this instead of Excel.exe you have to use Word.exe
    1. Declare your button
                   JButton butexlcom = new JButton("Carnet Offre");
                   butexlcom.addActionListener( new ButExlCommercial(msgout));
                   butexlcom.setBounds(215,510,110,30);
                   c.add( butexlcom );
    2. run your word document.
    class ButExlCommercial implements ActionListener {
         private JTextArea msgout;
         public ButExlCommercial( JTextArea msg) {
         msgout = msg;
         public void actionPerformed( ActionEvent e ) {
              try {
                   Runtime.getRuntime().exec("c:\\Program Files\\Microsoft Office\\Office\\Excel.exe NameWordDocument");
              catch(Exception en) {
                   msgout.append( "\n*** PROBLEME WORD ***\n" );
    }

  • Opening a document from a java program.

    Hi,
    Just wondering if anyone could help me???
    I have a simple java GUI based Program and i want to open up a pdf document when i press a button or click on a hyperlink. ( i want it to open in it's own window (ie launch in adobe acrobat reader) and not be displayed in my application itself).
    I have tried using:
    runtime.exec("c:\myfile.pdf");
    But this does'nt seem to work and is returning the following error:
    java.io.IOException: Create Process: c:\myfile.pdf error = 2
    Can't understand why this is'nt working.
    Any ideas??

    thanks,
    Itried this and now nothing happens when i press the button
    Here is my code:
    try
    Runtime.getRuntime().exec("cmd /h Hullo.pdf");
    }catch(IOException e)
    {System.out.println(e);
    }//end catch
    the document is called Hullo.pdf and it is stored on the H drive

  • View XML / HTML  Documents Stored in Oracle DB

    I need to build an application where a user can enter in basic query criteria and I need to return the appropriate XML (transformed by a specified XSL stylesheet) or static HMTL document stored as XMLTYPE or CLOB in the DB. Is it feasible to build such an application in Apex or do I need to build a JSP based application?
    Any other options?
    Thanks,
    Chris

    It is quite feasible (and quite easy) to do this via XMLDB. You can even create an Oracle Text index on the XML (or binary for Word documents, pdf etc) for fast case insensitive searching. Look at the XMLDB documentation, especially the sql access to the resource_view.
    Mike

  • How to read and then extract HTMl source code using java program?

    Hi,
    Could someone tell me how to read and then extract the content of certain tag from html source code. For example, given url http://.... , I would like to know what the <Title> content <Title> in that page is.
    Any help is greatly appreciate.

    Use a URLConnection to make the connection to the page at the needed URL. From the URLConnection, you can get an InputStream that is the stream of data from that page. Just search through the stream and find the <title> tags (don't forget to check for case sensitivity).

  • To run a java program via a batch file,when called from a web server

    REM This batch file runs the Spider with the [-v] option.
    REM Lines 51 through 54 are simple DOS commands..they call the Spider
    REM The location of the Spider package is the important piece of information here...
    REM a batch file has access to the whole computer where the server resides.
    setlocal
    set JDK=C:\j2sdk1.4.1_01
    set PATH=%JDK%\bin;.;%PATH%
    CLASSPATH=%JDK%\jre\lib\*.jar;.;%JDK%\jre\lib\ext\*.jar;.;%CLASSPATH%
    java spiderpackage.EntryPoint -v
    endlocal
    I am trying to run this batch file from my web server.I can see nothing on my browser.I can run the same program from my machine but unable to run from web server.what should I do?

    I am making my question more clear...
    I have a Windows batch (*.bat) file that echoes some html, then calls a java program the output of which is html as well, then echoes the final html.
    To make sure that the java program gets properly executed, I set the necessary environment variables (e.g., JDK, PATH, CLASSPATH, etc.). The script looks something like this:
    setlocal
    set JDK=path_to_JDK
    set PATH=path_to_java
    set CLASSPATH=path_to_java_classes
    echo ^<html^>^<body^>
    call java foo
    echo ^</body^>^</html^>
    endlocal
    The idea, of course, is to call this script through a browser, on a web server.
    Curiously, both echo lines return to the browser just fine, but any output from
    the java program (which just writes html to STDOUT) does not make it back.
    Can someone explain to me why this is happening? How do I set things up so that the output (STDOUT and STDERROR) from the java program make it back to the browser?

  • Advanced HTML Document use

    Ok, I'm using an HTML Document in my Java Applet Jabber client. Currently I'm using an HTML Document for the chat area. What I'm lacking is the ability to turn html on/off or put in text that contains actual HTML without parsing it out.
    I've tried replacing the < and > 's with > and < but to no avail. This simply removes the hats or whatever they're called and everything between them completely from the content of the document. I've tried using the whitespace attribute of css which also did not work. I've tried 'pre' tags, and I've tried closing the html tag and re-opening it. I tried changing the content type of the document. None of these have worked, they simply remove the html or the entire text altogether. I'm guessing I either have to modify the parser or play with the actual objects of the html.
    Here's how I'm inserting the html(this is the only way I could get it to work).
    int start = doc.getLength();
    chatPane.setCaretPosition(start);
    inserter = new HTMLEditorKit.InsertHTMLTextAction(null,"<font color='"+nameHTMLColor+"'>"+from+"</font><font color='"+messageHTMLColor+"'>"+Static.decodeChat(message, htmlEnabled)+"</font>",HTML.Tag.BODY,null);
    inserter.actionPerformed(new ActionEvent(chatPane,ActionEvent.ACTION_PERFORMED,null));
    int end = doc.getLength();
    chatPane.setCaretPosition(end);
    Thanks for your time.
    --Zephryl                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    hehe... I did, "I've tried replacing the < and > 's with > and < but to no avail." Sorry, the forum decoded the escapes.

  • Send signal from java program to Excel document

    Hi
    I have a Java-program that once a day brings information from a website on the internet. When this has been done, I want to send a signal to an Excel document to run a vba-macro. The "signal" can e.g. be to put a value in a certain cell in the Excel document.
    Any ideas on how to do this?

    Thanks gtRpr I didnt actually know what webservices are so I looked them up, below is one of definintions i got, and this is not what I want. The class that i write will be only used by me and only to extract data from one website.
    >
    Web services allow organizations to communicate data without intimate knowledge of each other's IT systems behind the firewall.
    secruity is not a problem, so there should be no need to encypt. Here is the kind of steps that I have put together so far, please could you comment on them...
    1. find out what the textfields are called on the website that need //do this by hand once
    2. parse the website username and password
    3. traverse to correct web page
    4. return page info in xml format //sorry im new to this side of programming, is it easy to convert html - xml
    5. need to strip out all unessary xml comments to reveal me with my specific data
    Thanks
    Edited by: calypso on Aug 8, 2008 2:15 AM

  • Can I write a Java Program in Narrative view and make it work?

    Hi All,
    I got a requirement which demands me to write a java program in narrative view. As per my knowledge its not possible..........but do you guys have any work around or any other way to get that java program run when the report runs and the out must be seen on the dashboard???
    Thanks in advance,
    DK

    Joe thanks for the reply. I would like to communicate with a JavaScript API (MapQuest) by declaring a Proxy server and port number to communicate. Or I can directly use Java SDK to display maps.
    This is more a general question. If I can execute a java program then I will try doing many things.
    Thanks,
    DK

  • Pls Help--- URGENT... Combining XML file and HTML file Using java program.

    Hi, I need to implemnt this for my project....
    I need to combine XML and HTML file and generate a new HTML file
    Sample XML File:
    <user>
    <txtName>sun</txtName>
    <txtAge>21 </txtAge>
    </user>
    Sample HTML File:
    <body>
    Name: <input type="text" name="txtName" value=""
    Age : <input type="text" Age="txtAge" value=""
    </body>
    I need a java program to combine the above xml and html files and generate the output in HTML.
    Any kind of help is sincerely Appreciated.
    Thanks.

    toucansam wrote:
    So you want us to write it for you? It's pretty straight forward, first parse the xml file with the *[best java xml parser|http://www.google.com/search?&q=parsing+xml+in+java]* and then go through the nodes and construct the html with strings and concatination. Then write the file using *[the best java file writer|http://www.google.com/search?hl=en&q=writing+to+a+file+in+java]*.
    He would do better to use existing tools that make this easy [http://www.ling.helsinki.fi/kit/2004k/ctl257/JavaXSLT/Ch05.html|http://www.ling.helsinki.fi/kit/2004k/ctl257/JavaXSLT/Ch05.html]

  • A gap between letters started to show in my indesgn files. tried to undo with tracking, the paragraph settings. nothing helped. it ruins the fluent view of the document. how can i restore the program so that doesn't happen?

    a gap between letters started to show in my indesign files. tried to undo with tracking, then with the paragraph settings. nothing helped. it ruins the fluent view of the document. how can i restore the program so that doesn't happen?
    for example: say i write a paragraph. then, in a weird some sort of way an involuntary gap suddenly appears between different letters of random words(i did not recognize any pattern to the gap appearing) throughout the entire paragraph. once i've double clicked on that paragraph, and made a minor change, lets say tapped a 'space' key, and then clicked ctrl+z to undo, it has aligned(or fixed) the entire paragraph and made it look ok again. i've tried numerous ways to undo the entire thing, but cannot find the reason. i've been working for a few years and there's no reason why this thing all of a sudden should happen right now.
    if anyone has stumbled on something like that and can advise, i would welcome it.
    MNS-KG
    Vadim

    yep...i'm typing with hebrew. i'll make a printscreen with the settings you've asked for@:
    if you look closely you'll see that almost every line has a single letter apart. in hebrew there is no usually a singe letter structured words.

  • How to view HTML document through ABAP in CRM

    Hi,
    I have an internal table with one field type string containing html code.
    How can i see the output of that html document in SAP CRM using ABAP code.
    Is there any standard function module to display the document by passing the internal table?
    Please help.
    Regards
    Kiran

    you can use cl_gui_htmlviewer control to do this.
    check the demo program
    SAPHTML_DEMO1
    RSDEMO_HTML_VIEWER
    or you can use dynamicdocuments for the same check out samples programs in package
    SDYNAMICDOCUMENTS
    Regards
    Raja

  • How to call java program by HTML page

    Hi guys,
    I'm new java programer and want to build an HTML page to access to ORACLE database on NT server by JDBC, Can anyone give me a sample?
    I already know how to access database by JDBC, but I don't know how to call java program by HTML page.
    If you have small sample,pls send to me. [email protected], thanks in advance
    Jian

    This code goes with the tutorial from this web page
    http://java.sun.com/docs/books/tutorial/jdbc/basics/applet.html
    good luck.
    * This is a demonstration JDBC applet.
    * It displays some simple standard output from the Coffee database.
    import java.applet.Applet;
    import java.awt.Graphics;
    import java.util.Vector;
    import java.sql.*;
    public class OutputApplet extends Applet implements Runnable {
    private Thread worker;
    private Vector queryResults;
    private String message = "Initializing";
    public synchronized void start() {
         // Every time "start" is called we create a worker thread to
         // re-evaluate the database query.
         if (worker == null) {     
         message = "Connecting to database";
    worker = new Thread(this);
         worker.start();
    * The "run" method is called from the worker thread. Notice that
    * because this method is doing potentially slow databases accesses
    * we avoid making it a synchronized method.
    public void run() {
         String url = "jdbc:mySubprotocol:myDataSource";
         String query = "select COF_NAME, PRICE from COFFEES";
         try {
         Class.forName("myDriver.ClassName");
         } catch(Exception ex) {
         setError("Can't find Database driver class: " + ex);
         return;
         try {
         Vector results = new Vector();
         Connection con = DriverManager.getConnection(url,
                                  "myLogin", "myPassword");
         Statement stmt = con.createStatement();
         ResultSet rs = stmt.executeQuery(query);
         while (rs.next()) {
              String s = rs.getString("COF_NAME");
              float f = rs.getFloat("PRICE");
              String text = s + " " + f;
              results.addElement(text);
         stmt.close();
         con.close();
         setResults(results);
         } catch(SQLException ex) {
         setError("SQLException: " + ex);
    * The "paint" method is called by AWT when it wants us to
    * display our current state on the screen.
    public synchronized void paint(Graphics g) {
         // If there are no results available, display the current message.
         if (queryResults == null) {
         g.drawString(message, 5, 50);
         return;
         // Display the results.
         g.drawString("Prices of coffee per pound: ", 5, 10);
         int y = 30;
         java.util.Enumeration enum = queryResults.elements();
         while (enum.hasMoreElements()) {
         String text = (String)enum.nextElement();
         g.drawString(text, 5, y);
         y = y + 15;
    * This private method is used to record an error message for
    * later display.
    private synchronized void setError(String mess) {
         queryResults = null;     
         message = mess;     
         worker = null;
         // And ask AWT to repaint this applet.
         repaint();
    * This private method is used to record the results of a query, for
    * later display.
    private synchronized void setResults(Vector results) {
         queryResults = results;
         worker = null;
         // And ask AWT to repaint this applet.
         repaint();

  • Confirm on - Scratch-resistant glass, oleophobic coating,Adobe Flash HTML,Radio Stereo FM,Java MIDP emulator,Scratch-resistant glass back panel,Audio/video player and editor,TV Out,Document editor (Word, Excel, PowerPoint, PDF)

    Kindly confirm on the following features of Iphone 4s..and advice me accordingly.
    Confirm on - Scratch-resistant glass, oleophobic coating,Adobe Flash HTML,Radio Stereo FM,Java MIDP emulator,Scratch-resistant glass back panel,Audio/video player and editor,TV Out,Document editor (Word, Excel, PowerPoint, PDF)

    You can easily compare any Nokia devices using the web sites, here is a comparison of the N8 from the Nokia UK site:
    http://www.nokia.co.uk/gb-en/products/compare/?action=productcompareaction&site=64060&products=23301...
    And similar from Nokia Developer:
    http://www.developer.nokia.com/Devices/Device_specifications/Comparison.xhtml?dev=Lumia_800,N8-00
    Some information may be incomplete at present, since some device details were kept secret until the final moment of the launch so the pages have been prepared withoug all of the data.
    Nokia Maps is available for Windows Phone at launch.
    Multi-Touch(TM) is the registered trademark of another company, however Windows Phone does feature the common touch features such as swiping, pinch-zooming and so on.
    If this or any post answers your question, please remember to help others by pressing the 'Accept as solution' button.

Maybe you are looking for