用Java呈现HTML
我正在尝试为正在处理的应用程序创建帮助面板。帮助文件已经使用html技术创建,我希望它在一个窗格中呈现并显示出来。我看到的所有代码都显示了如何呈现站点,例如“”。我想从我的电脑渲染一个文件,例如“file://c:\tutorial.html” 这是我的代码,但它似乎不起作用用Java呈现HTML,java,html,Java,Html,我正在尝试为正在处理的应用程序创建帮助面板。帮助文件已经使用html技术创建,我希望它在一个窗格中呈现并显示出来。我看到的所有代码都显示了如何呈现站点,例如“”。我想从我的电脑渲染一个文件,例如“file://c:\tutorial.html” 这是我的代码,但它似乎不起作用 import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrol
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
在Swing中呈现HTML是有问题的。Swing组件对HTML有一些本机支持,但它甚至不是HTML4。它是(有限的!)HTML3.2。如果您使用不同的桌面库API,您将有更好的选择
- 因为这是一个很好的选择。顾名思义,它将WebKit渲染引擎(为Chrome和Safari提供动力)插入SWT
- 可能也有一些选择
@cletus说的都是真的。如果要使用基于文件的URL运行当前应用程序,请尝试设置:
URL = "file:///C://print.html"
您忘记设置窗格的内容类型
jep.setContentType("text/html");
这不是问题所在。他注意到页面显示时,只是呈现错误(例如,注释显示为文本)。我相信他问了如何使基于文件的URL正常工作。我用原始URL运行代码,但它不起作用,所以我修复了URL…我把问题读了三遍,我猜问题出在URL上,而不是呈现本身。它现在呈现出来了,但似乎没有正确显示出来。我看到一些框已创建,但格式不正确。有什么帮助吗?@cletus在他的回答中就是这么说的:标准的Swing组件除了非常简单的HTML之外,无法呈现任何东西。(如果我们有一个JWebPane组件或其他东西就好了…)谢谢。我还需要设置可编辑属性,谢谢
jep.setContentType(“text/html”)
jep.setEditable(false);