swing jtree实现叶子节点闪动效果类似于QQ好友列表
2013-11-21 16:57
411 查看
package test; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTree; import javax.swing.Timer; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; public class JTreeTest { private static boolean isHidden; public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(800, 600); DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("节点1"); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("节点2"); final JTree tree = new JTree(root); tree.setCellRenderer(new MyCellRenderer()); root.add(node1); root.add(node2); tree.expandRow(0); frame.add(tree); final Timer timer = new Timer(500, new ActionListener() { public void actionPerformed(ActionEvent event) { isHidden = !isHidden; tree.updateUI(); } }); timer.start(); tree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); String name=node.toString(); if(node.isLeaf()){ if(name.equals("节点1")){ timer.stop(); tree.setCellRenderer(new MyRenderer()); } } } }); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } private static class MyCellRenderer extends DefaultTreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { leafIcon = getLeafIcon(); if ("节点1".equals(value.toString()) && !isHidden) { Component renderer = super.getTreeCellRendererComponent(tree, "", selected, expanded, leaf, row, hasFocus); if (renderer instanceof JLabel) { JLabel label = (JLabel)renderer; Icon icon = label.getIcon(); Dimension size = label.getPreferredSize(); size.width = 100; size.height = icon.getIconHeight(); label.setPreferredSize(size); label.setIcon(null); } return renderer; } else { return super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); } } } private static class MyRenderer extends DefaultTreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { leafIcon = getLeafIcon(); if ("节点1".equals(value.toString()) && !isHidden) { Component renderer = super.getTreeCellRendererComponent(tree, "", selected, expanded, leaf, row, hasFocus); JLabel label = (JLabel)renderer; Icon icon = label.getIcon(); Dimension size = label.getPreferredSize(); size.width = 100; size.height = icon.getIconHeight(); label.setPreferredSize(size); label.setIcon(null); } return super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); } } }
相关文章推荐
- 仿StickyListHeaders 实现listview的header滑动效果(类似QQ好友列表)
- Android中实现类似qq好友列表展开收起的效果
- 基于Qt的类似QQ好友列表抽屉效果的实现
- WPF—QQ界面(五):QQ好友分组列表的效果实现 及 截稿
- 基于Qt的类似QQ好友列表抽屉效果的实现
- JavaScript实现的购物车效果-好友列表效果
- jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- Android初级教程_用ExpandableListView实现类似QQ好友列表
- 如何弹出QQ临时对话框实现不添加好友在线交谈效果
- Android仿QQ好友列表分组实现增删改及持久化
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- android:listview实现qq,微信好友列表(头像,昵称,个性签名)
- 实现QQ 好友列表
- Android初级教程_用ExpandableListView实现类似QQ好友列表
- IOS实现仿qq好友列表功能
- 自定义ScrollView实现阻尼效果(类似于QQ下拉一段距离)
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- android实现类似于支付宝余额快速闪动的效果
- 基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)