有哪些纯 Java HTML 查看器和渲染器可用?要求是:
JComponent接口(interface)放入Scrollable Pane 。我只知道一些组件和项目,其中一些现在已经失效:
JEditorPane , 支持 HTML 3.2(从 Java 1.4 开始)javax.swing.text.html.HTMLEditorKit)JWebPane(有没有发布过)?最佳答案
从 Java 8 开始,您可以使用 JavaFX 的 WebView Component , 也可以是 used in Swing .
代码很简单:
JFXPanel jfxPanel = new JFXPanel(); // Scrollable JCompenent
Platform.runLater( () -> { // FX components need to be managed by JavaFX
WebView webView = new WebView();
webView.getEngine().loadContent( "<html> Hello World!" );
webView.getEngine().load( "http://www.stackoverflow.com/" );
jfxPanel.setScene( new Scene( webView ) );
});
它由 WebKit 引擎提供支持(版本取决于 JRE,并且是最新的)。 但请记住,它不是一个完整的浏览器,所以不要指望支持 HTML5 音频/视频。 否则,它运行 HTML + CSS + JS 和你的浏览器一样好。
从技术上讲,底层引擎是 C++,而不是原生 Java。 但它捆绑在 Oracle 的官方 JRE 中,不需要库,零配置,与 Java FX 一样跨平台,并且正在积极更新和维护。
我认为在大多数用例中与原生 Java 一样好?
The information below is outdated, seeing that we now have WebView in Java.
试过Cobra/Lobo , CSSBox , 和 Flying Saucer ,全是纯Java。其他的要么是原生的,要么是商业的。
内容:动态生成的简单 HTML(作为字符串),嵌入式 CSS 2.1,无 JS。
简短的故事:飞碟使用起来最简单,渲染最正确,但您最好完全控制内容。否则请寻找原生解决方案。
长篇大论:
CSSBox 似乎更活跃,但它似乎依赖于一些第三方库。例如,演示依赖于使用 apache xerces 的 nekohtml,它改变了默认 Java 1.7 sax 解析器的工作方式并破坏了我的程序,但是当我强制它使用 java 的内置 xerces 时,我得到 ClassCastException (InlineBox to BlockBox)。最后不能让它工作。另外还没有找到替换现有 BrowserCanvas 中的文档的方法。
Cobra 不再维护,必须手动修复 incompatibility issue使其在 1.7 中工作。还需要抓取 mozilla Rhino(不使用任何 JS)但仅此而已。之后就比较顺利了,只需要让 Logger 隐藏绘制消息即可。渲染是正确的,速度是公平的——只要文档简单。当您开始使用不太常见的标签或更复杂的布局时,Cobra 很快就会崩溃。
截至撰写本文时(2011 年 2 月),飞碟拥有三者中最好的 CSS 支持。设置非常简单(例如,不需要像 cobo 或像 cssbox 这样的 domparser 那样设置文档)几乎没有依赖 - 这也意味着没有 javascript。但是飞碟对你喂它的东西非常严格。源必须是格式良好的 XML,例如样式和脚本可能必须包装在 CDATA 中,如果您使用 html 实体,则必须声明 DTD(因此没有 html5 文档类型)。但是,如果您要嵌入您可以控制的内容,那么它可能是您的最佳选择。
关于java - 用于可滚动 Pane 的纯 Java HTML 查看器/渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438201/
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
当我使用has_one时,它工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD