首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将元素添加到模型时,JFace TreeViewer不会更新

JFace TreeViewer是Eclipse平台上的一个组件,用于显示树形结构的数据。当我们向模型中添加新的元素时,JFace TreeViewer默认情况下不会自动更新显示的树形结构。

要使JFace TreeViewer更新并显示新添加的元素,我们需要手动通知TreeViewer进行刷新。可以通过以下步骤实现:

  1. 在向模型中添加新元素后,调用TreeViewer的refresh()方法,该方法会刷新整个树形结构,重新加载所有的元素。
代码语言:txt
复制
treeViewer.refresh();
  1. 如果只是添加了单个元素,可以调用TreeViewer的add(Object parentElement, Object childElement)方法,将新元素添加到指定的父元素下。
代码语言:txt
复制
treeViewer.add(parentElement, childElement);
  1. 如果已经知道新元素在树形结构中的位置,可以调用TreeViewer的insert(Object parentElement, Object childElement, int position)方法,在指定位置插入新元素。
代码语言:txt
复制
treeViewer.insert(parentElement, childElement, position);

JFace TreeViewer的优势在于它提供了丰富的API和功能,可以方便地管理和显示树形结构的数据。它适用于需要展示层次结构数据的场景,比如文件浏览器、项目管理器等。

对于JFace TreeViewer的应用场景,可以举例如下:

  1. 文件浏览器:用于展示文件系统的层次结构,包括文件夹和文件。
  2. 项目管理器:用于展示项目的层次结构,包括项目、文件夹和文件。
  3. 数据分类展示:用于展示数据的分类结构,比如商品分类、组织结构等。

对于腾讯云的相关产品和产品介绍链接地址,可以参考以下内容:

  1. 云服务器(CVM):提供弹性计算能力,满足不同规模和需求的应用场景。产品介绍链接
  2. 云数据库 MySQL 版(CDB):提供稳定可靠的关系型数据库服务,支持高可用、备份恢复等功能。产品介绍链接
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于图片、音视频、文档等大规模数据存储和分发。产品介绍链接

请注意,以上只是腾讯云的一些产品示例,实际应用中还可以根据具体需求选择其他适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何编写一个面试能拿的出手的开源项目?

2.3 编写项目框架 编写的插件中主要使用了树插件,JFace为树控件提供了查看器Viewer。...在查看器框架中,模型称为输入,查看器本身充当控制器的角色,而树控件本身作为视图,当输入改变,查看器负责相应地改变控件的内容。 查看器框架主要由以下几部分构成。...(1)模型元素-存储着要显示在控件中的数据模型。 (2)内容提供者和标签提供者-负责数据模型转化成可以显示的图片和文字。 这个类是JavacTreeViewer的内部类。...我们只简单写了一些测试用的数据,其实这些数据都是要从Javac编译器中读取的,而Javac编译器分析的Java源代码又需要从当前激活的编辑器中获取,后面我会不断完善更新这些功能。...(3)控件,用来显示内容,这里用到的为树控件TreeViewer (4)查看器 模型元素以及内容提供者和标签提供者需要自己编写,控件和查看器不需要开发者自己编写。

87821
  • jface databinding:输入无效数值强制恢复初始值-updateModelToTarget

    * 在合适的机会将model状态更新到target,因为是异步更新,所以不保证当方法返回target更新完成。...(Float.valueOf(0.5f));确实被执行了, 但区别是当输入Text文本框的内容为无效数字,floatValue的内容并不会被修改,也就是还保持之前的值(0.5),此时再点击”恢复初始值...”按钮,设置的值还是0.5,floatValue并没有改变,所以没有触发Text的更新。...由此找出了问题的原因:当数据对象更新的值与原值相等,setValue不能触发Widget组件的更新。 怎么解决呢?...,会多一次强制更新的动作,所以如果代码写得更仔细点,应该是这样: // 点击“恢复初始值”按钮floatValue重新设置为初始值 btnNewButton.addSelectionListener

    1.1K50

    jface databinding(数据挷定)中的数据转换(IConverter)和数据验证(IValidator )

    做了一个可以验证输入的字符串是否为数值的NumText组件,参见 《java SWT:限制数值输入的Text文本框通用组件》,但是在使用过程中发现,这种方式有缺陷,就是如果用户输入非法的字符,结果就是输不进去,界面上不会有报错也不会有任何提示...我们以一个Text文本框为例,来说明如果一个文本框的内容与一个POJO对象中的属性进行绑定。 如下图,一个简单对话框中有一个Text文本框, ?...对于基本的数据类型转换,jface已经提供了IConverter接口的实现: StringToNumberConverter类用于String转换成数值(Float,Double,Integer,Long...(Text内容改变更新) UpdateValueStrategy updateStrategy = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE...当验证失败,数据对象的绑定属性不会更新。 说明: 本例中只是实现了Text组件向Configuration类的Float类型属性的单向数据同步。

    90510

    jface databinding:延迟计算--ComputedValue和WritableList使用的例子

    比如我们有一张表List,这张表中的元素会被修改(添加,删除,更新)。 另外一个值sum,sum是上面这张表所有元素的和。所以如果要获取sum的值,就要对List进行求和。...,则再次输出sum的值,已经更新 addends.add(Integer.valueOf(10)); System.out.println(sum.getValue()...我们可以任何一个普通的java.util.List封装成WritableList以实现对表中所有元素的监控,所以上面的示例代码也可以写成这样: TestComputeValue2.java package...Integer>(); list.add(0); list.add(1); list.add(2); // 构造WritableList对象list...System.out.println(sum.getValue()); // => 13 System.out.println(list.size());// list中元素数目更新

    39210

    jface databinding:label provider 实现多列表格(Table)数据绑定的两个途径

    显示需求 如下图,希望一组拥有两个字段的表与两列的table绑定在一起,实现自动显示。...也就是实现将数据模型中的不同字段的内容显示为viewer(如表格Table组件)中的文字或图像。...ViewSupport 如果这两个字段的数据对象是有getter方法(不一定要求有setter方法),而且字段的类型都有合适的toString()方法变量转为字符串,那么事情就变得简单:用ViewSupport...tblclmnName.setWidth(100); tblclmnName.setText("Name"); // 这里使用org.javatuples.Pair作为数据对象元素的类...tableViewer.setLabelProvider(new PairTableLabelProvider()); // 这里使用org.eclipse.core.internal.databinding.Pair作为数据对象元素的类

    1.7K100

    jface databindingPojoBindable实现对POJO对象的支持

    https://blog.csdn.net/10km/article/details/53811946 POJO对象无法被监控 在jface databinding中,普通的java...下面这个示例可以演示这个区别, 运行程序,程序启动,Text组件的内容被更新成POJO对象属性相同的值。 但按”测试”按钮,修改了POJO对象的属性,但Text控件的值并没有同步变化。...package testwb; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants...package testwb; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants...PojoBindable 上面这个方案已经实现了数据对象和UI组件的双向同步更新,但缺点就是需要对POJO对象进行改造,当项目中有多个POJO对象需要实现与UI组件的双同步更新,这个工作量也是挺大的。

    53210

    jface databinding:使用CheckboxTableViewer实现表中(Set)对象与CheckTable中选中条目数据绑定

    按右侧的”添加”,”删除”,”清除”按钮改变ObservableSet的内容,Table也同步改变。 ?...要实现这个需求,用jface提供的JFace Viewers实现数据绑定非常方便,JFace Viewers为Table,Tree等复杂组件提供了一个方便的开发框架,如下图对于每一种复杂组件都有对应的Viewer...则下一步会抛出异常 checkboxTableViewer.setContentProvider(new ObservableSetContentProvider()); // input...bindingContext.bindSet(observeCheckedSetCheckboxTableViewer, observableSet, null, null); // observableSet...内容绑定到Label组件,当observableSet内容变化时,lblSelected显示会自动更新 ISideEffect.create( observableSet

    1.7K100

    Eclipse华丽转身之控件表格工厂

    表格工厂 我们知道,无论是SWT的Table还是JFace的TableViewer/TreeViewer,都不能满。我们广泛需求,比如修改数据。...数据转换器 Translator数据转换器,可以数据转换成复杂控件使用的数据,如表格使用的列表数据; 举一个例子来理解什么是Translator,例如Stuido的逻辑流文件(*.bizx文件),用文本编辑器开打后可以看到图形化编辑器中的图元的信息都是使用...XML规范来描述的,比如一个运算逻辑图元属性如下图; 则图片上表格中的值与模型对象之间的关系,这样就不难理解Translator数据转换器需要做的事情了,接下来看下它的类图; 其中AbstractKTableFactory...ITreeNode,下图是它的类关系图: DefaultTreeNode实现了ITreeNode的接口并且继承了AbstractPropertyAwareElement(能够监控属性改变的类,当属性改变

    54020

    【插件开发】—— 11 窃听风云(Java事件监听原理-GEF实例讲解)

    布局详解 8 IPreferenceStore使用详解 9 编辑器代码着色 10 JFace开发   事件的监听,是插件开发中的重要环节,每一次的点击或者按键都有可能触发某种事件的响应,那么是如何实现的呢...{ System.out.println("noticed the change:"+message); } }   上面实现了一个监听的接口,只要实现了这个接口的类,都可以添加到队列中...GEF是一种MVC标准的架构,它的模型负责实现这个监听队列,而Control负责接收监听,进行响应,从而改变View的模型。 ?   ...Object id, Object value) { if (id == P_TABLE_NAME) { seName((String) value); } }   属性视图上的属性发生改变,...getModel方法就可以获取它对应的模型对象,再调用模型对象的addListener等方法添加到监听队列中就OK了。

    80850

    jface databinding:List,Set,Map对象的Observable代理封装

    普通的List,Set,Map,非observable),我们希望把将它转换成一个observable对象,这个observable对象就像是原对象的代理一样,当对observable对象操作(增加删除元素...),实际是对原对象的操作。...jface为List,Set,Map三种类型提供了对应的三种可写对象WritableList,WritableSet,WritableMap,研究了这三个类的代码,发现它们99%是满足这个需求,然并卵,...没有对toWrap做任何处理就传给了父类的构造函数,这才是我想要的 super(realm, toWrap, elementType); } 所以这虽然是一个很普遍的需求,但jface...好在jface的基础框架比较扎实,所以如果搞清楚jface的类继承结构,自己写代码也不复杂,所以我为List,Set,Map三种类型的分别写了三个类用于实现Observable封装(WrappedObservableList

    59560

    Vue自定义组件:解密v-model,轻松实现双向数据绑定

    创建一个Watcher类,用于订阅数据的改变,并更新DOM元素。 修改defineReactive方法,所有观察者对象添加到Dep类的subs数组中。...修改Watcher类的构造函数,将自身添加到Dep类的subs数组中。 通过以上步骤,当数据对象的属性值发生改变,会触发setter方法,从而通知所有的观察者对象进行更新。...绑定函数会被调用,输入的值与绑定的属性进行双向绑定。 更新数据模型:绑定函数会将输入的值更新到数据模型中,以实现数据的双向绑定。...通过以上步骤,v-model指令实现了将用户输入的值与数据模型进行双向绑定,当用户输入内容,数据模型会自动更新;反之,当数据模型改变,输入框中的值也会相应更新。...对于非表单元素的自定义组件,可以根据需要实现类似的双向数据绑定功能,但需要注意的是,此时的v-model指令并不会像在表单元素中那样自动更新数据。

    84530

    理解浏览器重绘和回流

    这里的每个节点都是一个盒子(box),应用盒子模型,有它们各自的 width、padding、margin 等元素。 渲染树生成后,先是会计算 “布局”,然后分层,最后进行栅格化(渲染)。...发生了不改变元素物理信息的情况下只会进行重绘。比如元素的背景色修改了,就要将元素的盒子做一个重新渲染。 重绘不会改变页面的布局,只是对局部区域重新渲染,一般来说不会导致严重的性能问题。...当元素的物理信息发生变化时,其后的元素就会改变位置,此时就要重新进行布局,计算元素的物理信息。 比如修改元素的高度,元素设置为 display: none; 等操作会导致重排。...像是 Vue 和 React 通过虚拟 DOM 找出不同,以减少更新 DOM 的操作; 尽量将要添加的元素都生成好,再一次性添加到文档流中,而不是一个个加上去; 缓存好要用的布局信息。...但如果在这过程中访问了布局相关信息(比如 scrollHeight、getBoundingClientRect),就会强制进行重渲染去获取最新布局数据; 经常变化的元素放到新的层。

    52521

    再见卷积神经网络,使用Transformers创建计算机视觉模型

    这些层与卷积层结合使用的模型,在模型的后一层中使用自注意,会获得最优结果。事实上,在自我注意和卷积层之间的关系中,研究表明,模型中早期使用的自我注意层学习到的归纳偏差与卷积默认存在的偏差相似。...每个输出都被送入一个完全连接的层,该层输出一个包含元素c和b的五维张量,其中c表示该元素的预测类,b表示边界盒的坐标(分别为1D和4D)。...以下是所呈现模型的表示。 ? 输入序列由从大小为PxP的小块中提取的像素值的扁平向量组成。每个扁平化元素被馈送到线性投影层,该线性投影层产生它们所谓的“补丁嵌入”。...通过自我关注更新后,此嵌入将用于预测输入图像的类别。可学习的位置嵌入也添加到这些嵌入的每个嵌入中。...我们可以在模型输入中包含的任何归纳偏差都会促进其学习并改善结果。 当用转换器更新特性,会丢失输入序列的顺序。

    93220

    用纯 JavaScript 撸一个 MVC 框架

    模型永远不会触及视图。视图永远不会触及模型。控制器用来连接它们。 我想提一下,为一个简单的 todo 程序做 MVC 实际上是一大堆样板。...要确保输入不能为空,然后我们创建带有 id、text 并且 complete 值为 false 的 todo。 todo 添加到模型中,然后重置输入框。...我们也不想每输入一个字母都调用editTodo,因为它会重新渲染整个待办事项列表UI。 我决定在控制器上创建一个方法,用新的编辑值更新临时状态变量,另一个方法调用模型中的editTodo方法。...现在我们可以这些添加到视图的事件侦听器中。当你在 contenteditable 元素输入时,input 事件会被触发,离开contenteditable元素,focusout 会触发。...进入“编辑”模式,这将会更新临时状态变量,当选中或单击待办事项,将会保存在模型中并重置临时状态。

    3.3K41
    领券