- MessageTreePlugin.java
final MessageTreeTab messageTreeTab = new MessageTreeTab();
/**
* Adds a tab to Spark
*/
private void addTabToSpark(){
// Get Workspace UI from SparkManager
Workspace workspace = SparkManager.getWorkspace();
// Retrieve the Tabbed Pane from the WorkspaceUI.
SparkTabbedPane tabbedPane = workspace.getWorkspacePane();
// Add own Tab.
tabbedPane.addTab("消息", null,messageTreeTab);
//messageTreeTab.invokeDialog();
}
- MessageTreeTab.java
public class MessageTreeTab extends JPanel {
private static final long serialVersionUID = -381458717030745122L;
private JiveTreeNode msgType;
private List<JiveTreeNode> groupNodes = new ArrayList<JiveTreeNode>();
private MessageTree msgTree;
private JiveTable messageType;
public MessageTreeTab(){
setLayout(new GridBagLayout());
msgType = new JiveTreeNode("分类");
msgTree = new MessageTree(msgType);
msgTree.setPreferredSize(new Dimension(150, 400));
String groupName = Res.getString("status.online");
String[] headers = new String[]{"类型","时间","内容"};
messageType = new JiveTable(headers, null);
messageType.setPreferredSize(new Dimension(350, 400));
final JScrollPane pane = new JScrollPane(messageType);
pane.setBorder(BorderFactory.createTitledBorder(Res.getString("label.message").replace("&", "")));
final JScrollPane treePane = new JScrollPane(msgTree);
treePane.setBorder(BorderFactory.createTitledBorder(Res.getString("message.send.to.these.people")));
// treePane.getVerticalScrollBar().setBlockIncrement(200);
// treePane.getVerticalScrollBar().setUnitIncrement(20);
// Add to UI
add(treePane, new GridBagConstraints(0, 0, 1, 1, 0.5, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 0), 0, 0));
add(pane, new GridBagConstraints(1, 0, 1, 3, 0.5, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(2, 0, 2, 5), 0, 0));
msgTree.expandTree();
}
/**
* Displays the message tree dialog.
*/
public void invokeDialog() {
JiveTreeNode groupNode = new JiveTreeNode("通知类型1");
groupNode.add( new JiveTreeNode("通知类型11"));
groupNode.add(new JiveTreeNode("通知类型12"));
groupNode.add(new JiveTreeNode("通知类型13"));
groupNode.add(new JiveTreeNode("通知类型14"));
groupNode.add(new JiveTreeNode("通知类型15"));
JiveTreeNode groupNode2 = new JiveTreeNode("通知类型2");
groupNode2.add( new JiveTreeNode("通知类型21"));
groupNode2.add(new JiveTreeNode("通知类型22"));
groupNode2.add(new JiveTreeNode("通知类型23"));
groupNode2.add(new JiveTreeNode("通知类型24"));
groupNode2.add(new JiveTreeNode("通知类型25"));
msgType.add(groupNode);
msgType.add(groupNode2);
}
}
- MessageTree.java
public class MessageTree extends JPanel { private static final long serialVersionUID = 5992552368286729600L; private Tree tree; public MessageTree(JiveTreeNode rootNode) { tree = new Tree(rootNode); tree.setCellRenderer(new DefaultTreeCellRenderer()); tree.setRowHeight(18); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.setToggleClickCount(1000); tree.putClientProperty("JTree.lineStyle", "Angled"); tree.addMouseListener(new NodeSelectionListener(tree)); setLayout(new BorderLayout()); add(tree); } class NodeSelectionListener extends MouseAdapter { JTree tree; NodeSelectionListener(JTree tree) { this.tree = tree; } public void mouseClicked(MouseEvent e) { int x = e.getX(); int y = e.getY(); int row = tree.getRowForLocation(x, y); TreePath path = tree.getPathForRow(row); if (path != null) { JiveTreeNode node = (JiveTreeNode)path.getLastPathComponent(); if (!node.isLeaf()) { tree.expandPath(path); } else { tree.collapsePath(path); } ((DefaultTreeModel)tree.getModel()).nodeChanged(node); // I need revalidate if node is root. but why? tree.revalidate(); tree.repaint(); } } } public JTree getTree() { return tree; } /** * Call to expand the entire tree. */ public void expandTree() { for (int i = 0; i <= tree.getRowCount(); i++) { tree.expandPath(tree.getPathForRow(i)); } } }
效果图:
相关推荐
本资料是集合20篇知网被引最高的基于spark的大数据论文,包括大数据Spark技术研究_刘峰波、大数据下基于Spark的电商实时推荐系统的设计与实现_岑凯伦、基于Spark的Apriori算法的改进_牛海玲、基于Spark的大数据混合...
大数据资料PPT Spark(二次开发篇) Hive(二次开发篇) HBase(二次开发篇 HDFS(二次开发篇)
大数据Spark二次开发.pdf
是openfire的spark 不是大数据的下载的请注意,内容包括spark最新源码以及二次开发入门教程
基于Spark大数据环境开发的二手房分析和预测系统源码设计 基于Spark大数据环境开发的二手房分析和预测系统源码设计 基于Spark大数据环境开发的二手房分析和预测系统源码设计 基于Spark大数据环境开发的二手房分析和...
本课程论文阐述了spark和spark集成开发环境Intellij IDEA的安装与操作,也详细说明了基于Spark的电影推荐系统的开发流程。推荐引擎是最常用的机器学校应用,我们可以在各大购物网站上看到这方面的应用。基于Spark的...
基于Spark的电影推荐系统的设计与实现.docx基于Spark的电影推荐系统的设计与实现.docx基于Spark的电影推荐系统的设计与实现.docx基于Spark的电影推荐系统的设计与实现.docx基于Spark的电影推荐系统的设计与实现.docx...
一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、kafka偏移量管理,web后台管理,web api启动、停止spark streaming,宕机告警、自动重启等等功能支持,用户只需要关心业务代码,无需关注繁琐的...
spark+openfire二次开发,包括配置基本插件实现等等
spark笔记整理文档spark笔记整理文档spark笔记整理文档
基于Spark架构开发的电影推荐系统源码.zip基于Spark架构开发的电影推荐系统源码.zip基于Spark架构开发的电影推荐系统源码.zip基于Spark架构开发的电影推荐系统源码.zip基于Spark架构开发的电影推荐系统源码.zip基于...
基于Spark的全球新冠疫情系统的分析与实现
Spark学习笔记 Spark学习笔记 Spark学习笔记
基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品推荐系统基于spark的商品...
基于Spark的实时电影推荐系统研究
大数据期末课设~基于spark的气象数据处理与分析 完整版Word 可以拿来直接交作业
该项目是我大三下学期的课程设计,主要实现一个基于Spark实现电影点评系统用户行为分析,用户可以对自己已经看过的电影做出一定的评价,然后对这些观影数据信息进行分析。
[毕业设计]基于Spark网易云音乐数据分析 .zip 完整代码,可运行
该项目是大三下学期的课程设计,使用的数据集来自知名数据网站 Kaggle 的 tmdb-movie-metadata 电影数据集,以Python为编程语言,使用大数据框架Spark对数据进行了预处理,然后分别从多个方面对数据进行了分类和分析...
NULL 博文链接:https://huxj62488.iteye.com/blog/617826