受http://www.oreillynet.com/onjava/blog/2007/05/javafx_first_steps_hello_onjav_1.html这篇文章的启发,加上想学习一下JavaFX,就在上面那篇文章的基础上,做了一个简易的RSS阅读器,其界面类似于Adobe Flex 2的一个demo:进入http://try.flex.org/index.cfm,找到Blog Reader的demo。
读取RSS feed并没有什么问题,使用rome:
java 代码
- package rssreader;
-
- import com.sun.syndication.feed.synd.SyndEntry;
- import com.sun.syndication.feed.synd.SyndFeed;
- import com.sun.syndication.io.FeedException;
- import com.sun.syndication.io.SyndFeedInput;
- import com.sun.syndication.io.XmlReader;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
-
- public class RssReader {
- private URL url;
- private Integer titleLength = 50;
-
- public RssReader() {
-
- }
-
- public SyndEntry[] load(String urlString) throws IllegalArgumentException, FeedException, IOException {
- if (urlString != null && urlString != "") {
- try {
- url = new URL(urlString);
- } catch (MalformedURLException e) {
- e.printStackTrace();
- return null;
- }
- }
- if (url == null) {
- return null;
- }
- SyndFeedInput input = new SyndFeedInput();
- SyndFeed feed = input.build(new XmlReader(url));
- SyndEntry[] entries = (SyndEntry[]) feed.getEntries().toArray(new SyndEntry[0]);
-
- for( SyndEntry entry : entries ) {
- entry.setTitle( entry.getTitle().length() > titleLength ? entry.getTitle().substring(0, titleLength - 3 ) + "..." : entry.getTitle() );
- }
-
- return entries;
- }
-
-
- }
使用JavaFX构建UI:
JavaFX代码
- package rssreader;
-
- import javafx.ui.*;
- import javafx.ui.canvas.*;
- import javax.swing.JComponent;
- import com.sun.syndication.feed.synd.SyndEntry;
-
- var reader:RssReader = READER;
-
- class RssReaderModel {
- attribute rssUrl: String;
- attribute rssEntries: SyndEntry*;
- attribute rssContent: String?;
- attribute rssSelectedIndex: Integer;
- }
-
- var model = RssReaderModel {
- rssUrl: "http://woodstudio.iteye.com/blog/rss_blog/alexcheng",
- };
-
-
- var panel = GroupPanel {
- var row1 = Row {}
- var row2 = Row {}
- var col = Column {}
- rows: [row1, row2]
- columns: col
- content:
- [
- GroupPanel {
- row: row1
- column: col
- var row = Row {}
- var labelCol = new Column
- var urlCol = new Column
- var butCol = new Column
- rows: row
- columns: [labelCol, urlCol, butCol]
- content:
- [
- SimpleLabel {
- row: row
- column: labelCol
- text: "RSS URL:"
- },
- TextField {
- row: row
- column: urlCol
- columns: 60
- value: bind model.rssUrl
- },
- Button {
- row: row
- column: butCol
- text: "Get Entries"
- action: operation() {
- model.rssEntries = reader.load(model.rssUrl);
- }
- }
- ]
- },
- SplitPane {
- row: row2
- column: col
- orientation: HORIZONTAL
- content:
- [
- SplitView {
- weight: 0.3
- content:
- Table {
- columns:
- [
- TableColumn {
- text: "Title"
- },
- TableColumn {
- text: "Date"
- },
- ]
- cells : bind foreach (entry in model.rssEntries)
- [
- TableCell {
- text: bind entry.title
- },
- TableCell {
- text: bind entry.publishedDate.toLocaleString()
- }
- ]
- selection: bind model.rssSelectedIndex
- }
- },
- SplitView {
- weight: 0.7
- content:
- EditorPane {
- opaque: true
- contentType: HTML
- editable: false
- text: bind model.rssContent
- }
- }
- ]
- }
- ]
- };
-
- trigger on (RssReaderModel.rssSelectedIndex = value) {
- var desc = rssEntries[value].description.value;
- rssContent = "<html><body> {desc} </body></html>";
- }
-
- MY_CONTAINER:JComponent.add(panel.getComponent());
-
-
接着就是使用JSR223的scripting framework来执行:
java 代码
- package rssreader;
-
- import javax.script.Bindings;
- import javax.script.ScriptContext;
- import javax.script.ScriptEngine;
- import javax.script.ScriptEngineManager;
- import javax.script.SimpleScriptContext;
- import javax.swing.JFrame;
-
- public class Main {
-
-
-
-
-
- public static void main(String[] args) throws Exception {
- RssReader reader = new RssReader();
-
- JFrame frame = new JFrame(
- "RSS Reader implemented using JavaFX by alexcheng");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(800, 600);
-
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- ScriptEngineManager manager = new ScriptEngineManager(loader);
- ScriptEngine engine = manager.getEngineByExtension("fx");
-
- Bindings bindings = engine.createBindings();
- bindings.put("READER:rssreader.RssReader", reader);
-
- bindings.put("MY_CONTAINER:javax.swing.JComponent", frame
- .getContentPane());
-
- ScriptContext context = new SimpleScriptContext();
- context.setBindings(bindings, ScriptContext.GLOBAL_SCOPE);
- context.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
- engine.setContext(context);
-
- String script = "import rssreader.FxMain;";
- engine.eval(script);
-
- frame.setVisible(true);
- }
-
- }
最后的界面如下:
- 描述: JavaFX RSS Reader
- 大小: 74.1 KB
分享到:
相关推荐
【简易RSS阅读器】是一个基于Java编程语言开发的应用程序,主要功能是解析和展示RSS(Really Simple Syndication) feed,让使用者能够方便地获取和阅读网络上的新闻、博客或者其他更新内容。RSS是一种XML格式的数据...
6. **用户界面**:JavaFX或Swing可以用来创建RSS阅读器的图形用户界面。用户可以通过界面订阅新的RSS源,查看和管理订阅列表,以及阅读和搜索内容。 7. **线程管理**:为了实现非阻塞的用户体验,RSS阅读器通常在...
6. **用户界面**:开发RSS阅读器的用户界面可以使用JavaFX或Swing。JavaFX提供了一套现代、丰富的图形组件,适合创建美观且功能强大的桌面应用。Swing则是较旧但仍然广泛使用的UI库。 7. **事件驱动编程**:RSS阅读...
JavaFX PDF阅读器是一款基于JavaFX图形用户界面库开发的应用程序,主要用于查看和浏览PDF(Portable Document Format)文档。PDF格式是一种广泛使用的文档格式,它能够保持文档的原始布局和样式,无论在哪种设备上...
4. **Java Swing或JavaFX**:如果RSS阅读器是桌面应用,那么可能会用到Java GUI库,如Swing或JavaFX来构建用户界面。开发者需要了解组件布局、事件处理、数据绑定等概念。 5. **HTTP请求**:为了获取RSS feed,应用...
【Java+XML写的RSS阅读器】是一个基于Java编程语言和XML解析技术开发的软件应用,主要用于获取、解析和展示RSS(Really Simple Syndication) feed。RSS是一种内容发布格式,允许用户订阅并获取网站的更新信息,如...
【标题】:“基于Java的XML写的RSS阅读器” 在标题中提到的“基于Java的XML写的RSS阅读器”是一个利用Java编程语言开发的程序,它能够解析并展示RSS(Really Simple Syndication) feed。RSS是一种XML格式,用于...
学校里办的JavaFX讲座时JavaFX的简易PPT,Sun同事主讲,加入了和WPF等的比较,开阔了眼界,非常好
javafx写的记事本
Java+XML编写的RSS阅读器是一个利用Java编程语言和XML技术实现的应用,主要用于解析和展示RSS(Really Simple Syndication) feeds。RSS是一种基于XML的互联网内容发布格式,它允许用户订阅并获取网站的最新更新,如...
【标题】:“Java+XML写的RSS阅读器”是基于Java编程语言实现的一个应用程序,它能够解析和显示RSS(Really Simple Syndication)格式的新闻或博客摘要。RSS是一种用于发布和订阅内容的XML标准,通常用于博客、新闻...
总之,这个“RSS_Rss browser_java rss_rss java_rss阅读器”项目涵盖了RSS订阅的基本原理,Java XML解析技术,以及GUI编程的实践。通过深入理解这些知识点,不仅可以帮助你理解RSS阅读器的工作机制,还能够提升你的...
下面我们将详细探讨JavaFX、icepdf以及如何使用这些技术构建一个PDF阅读器。 JavaFX是Oracle公司推出的用于创建桌面应用、移动应用和网页应用的Java库。它提供了丰富的图形用户界面(GUI)组件和强大的2D、3D渲染...
本项目是一个用Java语言实现的RSS阅读器,具有用户界面(UI),方便用户交互。下面将详细阐述Java开发RSS阅读器的相关知识点。 1. **Java基础知识**: - **Java编程语言**:Java是一种面向对象的、跨平台的编程...
标题中的“基于Java的实例源码-XML写的RSS阅读器.zip”表明这是一个使用Java编程语言开发的项目,其主要功能是解析和展示RSS(Really Simple Syndication) feed。RSS是一种XML格式,用于发布新闻、博客和其他定期...
标题中的“基于Java的XML写的RSS阅读器”指的是一个使用Java编程语言开发的软件应用程序,其功能是解析和展示RSS(Really Simple Syndication) feed。RSS是一种 XML 格式,常用于发布新闻、博客和其他定期更新的...
RSS(Really Simple Syndication)是一种网络内容发布和聚合的标准,允许用户通过RSS阅读器订阅并获取网站的更新信息。在这个项目中,我们基于Java语言实现了RSS阅读器,它具备了基本的RSS源加载和更新检测功能,...
这个项目,"JavaFX 简易音乐播放器",是一个基于JavaFX的简单音乐播放应用程序,非常适合初学者或者想要熟悉JavaFX特性的开发者进行学习和实践。 在JavaFX中,你可以使用丰富的API来创建吸引人的用户界面,包括按钮...