JAVA swing JTree updateUI() 和 repaint()

问题描述

package com.hello.model;import java.util.concurrent.TimeUnit;import javax.swing.*;import javax.swing.tree.*;public class NewTree {JFrame frame = new JFrame();DefaultMutableTreeNode parent = new DefaultMutableTreeNode("baidu");DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("sohu");DefaultMutableTreeNode child11 = new DefaultMutableTreeNode("sina");DefaultMutableTreeNode child12 = new DefaultMutableTreeNode("taobao");DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("163");JTree tree = new JTree(parent);private void init() throws InterruptedException {parent.add(child1);parent.add(child2);child1.add(child11);child1.add(child12);tree.expandPath(new TreePath(child1.getPath()));frame.add(new JScrollPane(tree));frame.pack();frame.setVisible(true);TimeUnit.SECONDS.sleep(5);child1.remove(child11); //tree.updateUI(); //1处代码可以更新UItree.repaint(); //2处代码无法更新UI}public static void main(String[] args) throws InterruptedException {new NewTree().init();}}为什么1处代码可以更新UI,能够看到节点删除的效果,而2处就不可以?

解决方案

updateUI()通常当look and feel发生变化时调用,从UIManager中获取新的L&F,应用到组件上,重绘的范围比较大,要稍微慢一些。repaint()只是通知RepaintManager重绘组件,不包括UI和布局的管理。

时间: 2024-11-20 19:53:17

JAVA swing JTree updateUI() 和 repaint()的相关文章

关于Java Swing中的repaint()方法及setVisible()的问题

问题描述 关于Java Swing中的repaint()方法及setVisible()的问题 我写了一个JFrame, 加了一个JComponent,进行一些处理后使用removeAll()移除了JComponent中的所有组件,然后调用add(JPanel)添加了一个新的组件,最后调用repaint()方法显示这个JPanel 这时发现JPanel无法显示,但调整窗口大小后就能显示 因为调整窗口大小不是会自动调用repaint()方法吗?但是我自己调用了啊为什么不会显示嘞. 接下来, 我在re

[Java]Swing树状组件JTree

一 简单样式 TreeNodeDemo.java package com.sjf; import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; public class T

java swing中一个JTree如何在多个panel中显示

问题描述 java swing中一个JTree如何在多个panel中显示 要实现的功能是 需要在2个panel(A, B )中显示用户组的树结构, 其中有一个panel(B)中提供了对树的增删改,运行程序首先显示A, 通过A上的按钮点击事件显示B, 要在B更改同时更新A上的显示情况, 现在遇到的情况是:当点击A上的按钮显示B时,A上的tree就不见了: 怎么解决啊? A的部分代码 DefaultMutableTreeNode root = new DefaultMutableTreeNode("

java swing的拖放例子

我从java.sun.com和javaworld.com上的例子改过来的一棵文件系统树,支持拖放,CTRL+V复制文件 import java.awt.AlphaComposite;import java.awt.Component;import java.awt.Graphics2D;import java.awt.Point;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.datatransfer.DataF

使用Java Swing 创建一个XML编辑器

xml|创建 我想您一定对XML有所了解,说不定您现在还跃跃欲试想写一段XML文本呢,可是现在能找到的跨平台的.免费的XML编辑器太少了.所以在本文中,我想介绍一下或者说带您一步一步的开发一个简单的XML编辑器,当然我们要用到一些最常见的Java 2 Swing组件,不过这些都是免费的,有些是JDK中的,有些是可以从网上下载的.我想通过本文,你就可以创建一个属于你自己的XML编辑器. 先让我介绍一下本文辑写的思路.首先我想简要的讨论一下XML和为什么树型结构比较适合用来显示XML,然后我们来看一

Java swing组件的串行化和读取

由于JButton和JTree都已经实现了Serializable接口,因此Java swing组件 的串行化和读取是可以做到的. 方法就是使用ObjectInputStream读取文件中的对象,使用 ObjectOutputStream把对象写入文件. 如: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.I

使用Java Swing创建一个XML编辑器

我想您一定对XML有所了解,说不定您现在还跃跃欲试想写一段XML文本呢,可是现在能找到的跨平台的.免费的XML编辑器太少了.所以在本文中,我想介绍一下或者说带您一步一步的开发一个简单的XML编辑器,当然我们要用到一些最常见的Java 2 Swing组件,不过这些都是免费的,有些是JDK中的,有些是可以从网上下载的.我想通过本文,你就可以创建一个属于你自己的XML编辑器. 先让我介绍一下本文辑写的思路.首先我想简要的讨论一下XML和为什么树型结构比较适合用来显示XML,然后我们来看一看JAXP A

java swing 把控件转化为BufferedImage

Java swing 把控件映射为BufferedImage 如何把java swing的可视控件 转化为BufferedImage 呢? 直接上代码: Java代码   /***           * convert JTextArea to image           * @param ta           * @param destFile           * @param format           */           public static Buffere

java swing 表格相关操作

Java swing 表格相关操作 (1)设置表格数据 Java代码   public static void setTableData3(JTable parameterTable_1,Map requestMap,boolean hasTextField,boolean isTF_table_cell,String[]columnNames) {           System.out.println("setTableData3");           int length