我正在尝试为我正在处理的应用程序创建一个帮助面板。帮助文件,因为已经创建使用html技术,我希望它被呈现在一个窗格中,并显示。我看到的所有代码都展示了如何渲染一个站点,例如"http://google.com“。我想从我的pc渲染一个文件,例如"file://c:\tutorial.html“
这是我拥有的代码,但它似乎不起作用。
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import java.awt.Color;
import java.awt.Container;
import java.io.IOException;
import static java.lang.System.err;
import static java.lang.System.out;
final class TestHTMLRendering
{
// ------------------------------ CONSTANTS ------------------------------
/**
* height of frame in pixels
*/
private static final int height = 1000;
/**
* width of frame in pixels
*/
private static final int width = 1000;
private static final String RELEASE_DATE = "2007-10-04";
/**
* title for frame
*/
private static final String TITLE_STRING = "HTML Rendering";
/**
* URL of page we want to display
*/
private static final String URL = "file://C:\\print.html";
/**
* program version
*/
private static final String VERSION_STRING = "1.0";
// --------------------------- main() method ---------------------------
/**
* Debugging harness for a JFrame
*
* @param args command line arguments are ignored.
*/
@SuppressWarnings( { "UnusedParameters" } )
public static void main( String args[] )
{
// Invoke the run method on the Swing event dispatch thread
// Sun now recommends you call ALL your GUI methods on the Swing
// event thread, even the initial setup.
// Could also use invokeAndWait and catch exceptions
SwingUtilities.invokeLater( new Runnable()
{
/**
* } fire up a JFrame on the Swing thread
*/
public void run()
{
out.println( "Starting" );
final JFrame jframe =
new JFrame( TITLE_STRING + " " + VERSION_STRING );
Container contentPane = jframe.getContentPane();
jframe.setSize( width, height );
contentPane.setBackground( Color.YELLOW );
contentPane.setForeground( Color.BLUE );
jframe.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
try
{
out.println( "acquiring URL" );
JEditorPane jep = new JEditorPane( URL );
out.println( "URL acquired" );
JScrollPane jsp =
new JScrollPane( jep,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
contentPane.add( jsp );
}
catch ( IOException e )
{
err.println( "can't find URL" );
contentPane.add( new JLabel( "can't find URL" ) );
}
jframe.validate();
jframe.setVisible( true );
// Shows page, with HTML comments erroneously displayed.
// The links are not clickable.
}
} );
}// end main
}// end TestHTMLRendering
发布于 2010-04-10 01:43:48
您忘记设置JEditorPane的内容类型。
jep.setContentType("text/html");
发布于 2010-04-10 01:06:45
在Swing中呈现HTML是有问题的。Swing组件对超文本标记语言有一些本机支持,但它甚至不是HTML4。它是(有限的!)HTML 3.2。如果您使用不同的桌面库API,您将有更好的选择
适用于Eclipse Standard Widget Tookit的
您可能还想看看Flying Saucer,它是:
一个XML/XHTML/CSS 2.1渲染器
(100%JAVA)
发布于 2010-04-10 01:08:33
@cletus说的都是真的。如果你想让你当前的应用程序使用基于文件的URL,尝试设置:
URL = "file:///C://print.html"
https://stackoverflow.com/questions/2611827
复制相似问题