当前位置: 首页 > news >正文

【JFace】ComboViewer 设置了默认值,但没有效果

问题

在数据回显时,明明在代码中通过comboViewer.setSelection设置了默认值,但没有生效(回显),是怎么回事呢 ?

分析

如果comboViewer.setSelection(new StructuredSelection(items[1]))不起作用,可能是由于以下原因之一:

  1. 内容提供者(Content Provider)设置了不同的元素类型:在使用StructuredSelection设置选中项时,它需要与ComboViewer内容提供者返回的元素类型匹配。如果它们不匹配,StructuredSelection将无法识别要选中的元素。例如,如果ComboViewer的内容提供者返回的是Person对象,那么在使用StructuredSelection设置选中项时,需要使用new StructuredSelection(selectedPerson)

  2. 选中项不存在于ComboViewer的内容中:当使用StructuredSelection设置选中项时,确保它存在于ComboViewer的内容中。否则,ComboViewer将不会选择任何项。

  3. 选中项在内容提供者中具有不同的对象实例:当使用StructuredSelection设置选中项时,它需要与ComboViewer内容提供者返回的元素对象实例匹配。如果它们不匹配,StructuredSelection将无法识别要选中的元素。在这种情况下,可以尝试在内容提供者中为每个元素返回一个唯一的标识符,并使用StructuredSelection设置选中项时,将标识符作为参数传递。

如果您仍然无法解决问题,请检查控件的其他设置和属性,以确保它们没有干扰选中项的设置。例如,将ComboViewer的样式设置为SWT.READ_ONLY,以确保用户无法手动更改选中项。

解决方案

1、首先要根据检查代码,根据以上分析,代码片段的顺序应该如下:

ComboViewer comboViewer = new ComboViewer(parent, SWT.READ_ONLY);
comboViewer.setContentProvider(ArrayContentProvider.getInstance());
comboViewer.setInput(new String[] {"Item 1", "Item 2", "Item 3"});
comboViewer.setSelection(new StructuredSelection("Item 1"));

注意:setInput 一定能要在 setSelection 之前

2、按照1处理了,依然不能回显,应使用如下代码片段处理
这种情况在对元素是对象时,常出现
示例如下:

// 定义 Book 类
class Book {private int id;private String name;private double price;private String publish;public Book(int id, String name, double price, String publish) {this.id = id;this.name = name;this.price = price;this.publish = publish;}public int getId() {return id;}public String getName() {return name;}public double getPrice() {return price;}public String getPublish() {return publish;}@Overridepublic String toString() {return name + " (" + price + ")";}
}// 创建 Book 列表
List<Book> books = new ArrayList<>();
books.add(new Book(1, "Book 1", 10.0, "Publisher 1"));
books.add(new Book(2, "Book 2", 20.0, "Publisher 2"));
books.add(new Book(3, "Book 3", 30.0, "Publisher 3"));// 创建 ComboViewer 控件并设置内容提供者和标签提供者
ComboViewer comboViewer = new ComboViewer(parent, SWT.READ_ONLY | SWT.DROP_DOWN | SWT.BORDER);
comboViewer.setContentProvider(new ArrayContentProvider());
comboViewer.setLabelProvider(new LabelProvider() {@Overridepublic String getText(Object element) {if (element instanceof Book) {Book book = (Book) element;return String.format(" %s (%d)",book.getName(),book.getPrice());}return super.getText(element);}
});// 将 Book 列表设置为 ComboViewer 的输入
comboViewer.setInput(books);// 设置默认选中项为第一个元素
Book bookformDB = bookformDB();// 从数据库查找到的,用于回显
comboViewer.setSelection(new StructuredSelection(bookformDB));

3、如果还不能显示,在设置时做如下处理

在 2 中的代码上做修改

// 设置默认选中项为第一个元素
Book bookformDB = bookformDB();// 从数据库查找到的,用于回显
// 应查找books中的bk查找出来,将其设置为默认值,亲测有效
for(Book bk : books){if(bk.getId() == bookformDB.getId()){comboViewer.setSelection(new StructuredSelection(bk));}
}

相关文章:

【JFace】ComboViewer 设置了默认值,但没有效果

问题 在数据回显时&#xff0c;明明在代码中通过comboViewer.setSelection设置了默认值&#xff0c;但没有生效&#xff08;回显&#xff09;&#xff0c;是怎么回事呢 &#xff1f; 分析 如果comboViewer.setSelection(new StructuredSelection(items[1]))不起作用&#xf…...

基于Redis的Stream结构作为消息队列,实现异步秒杀下单

文章目录 1 认识消息队列2 基于List实现消息队列3 基于PubSub的消息队列4 基于Stream的消息队列5 基于Stream的消息队列-消费者组6 基于Redis的Stream结构作为消息队列&#xff0c;实现异步秒杀下单 1 认识消息队列 什么是消息队列&#xff1a;字面意思就是存放消息的队列。最…...

ePWM模块-时基模块(2)

ePWM模块(2) 时基模块的使用 TBPRD:周期寄存器 (设置的时钟周期存入此,可通过阴影寄存器缓冲后写入,也可通过活动寄存器立即写入) TBCTR:时基计数变值寄存器 (时基当前所计数的值存入,用于和所设定周期值比较) TBPHS:时基相位寄存器 TBSTS:时基状态寄存器 …...

让GPT对话写小说

## 来自你的消息: 写个小说 ## 来自ChatAI的消息: 很好&#xff0c;我可以为您编写一个小故事。以下是一个短小精干的故事&#xff1a; 《夜行者》 夜&#xff0c;是个寂静而神秘的时间&#xff0c;很多人都选择睡眠。但在这个城市&#xff0c;有一群人——夜行者&#xff0c;他…...

Docker 应用部署-MySQL

一、安装MySQL 1搜索mysql镜像 docker search mysql 2拉取mysql镜像 docker pull mysql:8.0.20 3创建容器 通过下面的命令&#xff0c;创建容器并设置端口映射、目录映射 #在用户名目录下创建mysql目录用于存储mysql数据信息 mkdir /home/mysql cd /home/mysql #创建docker容…...

电容笔哪个厂家的产品比较好?苹果平板的电容笔推荐

从目前来说&#xff0c;这个苹果的正版电容笔&#xff0c;售价真的是太贵了&#xff0c;一支就要接近上千元。事实上&#xff0c;对于那些没有很多预算的人来说&#xff0c;平替电容笔是一个很好的选择。一支苹果电容笔&#xff0c;价格是四支平替电容笔的四倍&#xff0c;但平…...

今年的面试难度有点大....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…...

【PWN · ret2libc】ret2libc2

ret2libc1的略微进阶——存在systemplt但是不存在“/bin/sh”怎么办&#xff1f; 目录 前言 python3 ELF 查看文件信息 strings 查看寻找"/bin/sh" IDA反汇编分析 思路及实现 老规矩&#xff0c;偏移量 offset EXP编写 总结 前言 经过ret2libc1的洗礼&a…...

深度学习01-tensorflow开发环境搭建

文章目录 简介运行硬件cuda和cuddntensorflow安装。tensorflow版本安装Anaconda创建python环境安装tensorflow-gpupycharm配置配置conda环境配置juypternotebook 安装cuda安装cudnn安装blas 云服务器运行云服务器选择pycharm配置代码自动同步远程interpreter 简介 TensorFlow是…...

linux相关操作

1 系统调用 通过strace直接看程序运行过程中的系统调用情况 其中每一行为一个systemcall &#xff0c;调用write系统调用将内容最终输出。 无论什么编程语言都必须通过系统调用向内核发起请求。 sar查看进程分别在用户模式和内核模式下的运行时间占比情况&#xff0c; ALL显…...

PMP项目管理-[第十章]沟通管理

沟通管理知识体系&#xff1a; 规划沟通管理&#xff1a; 10.1 沟通维度划分 10.2 核心概念 定义&#xff1a;通过沟通活动(如会议和演讲)&#xff0c;或以工件的方式(如电子邮件、社交媒体、项目报告或项目文档)等各种可能的方式来发送或接受消息 在项目沟通中&#xff0c;需要…...

13个UI设计软件,一次满足你的UI设计需求

UI设计师的角色是当今互联网时代非常重要的一部分。许多计算机和移动软件都需要UI设计师的参与&#xff0c;这个过程复杂而乏味。这里将与您分享13个UI设计软件&#xff0c;希望帮助您正确选择UI设计软件&#xff0c;节省工作量&#xff0c;创建更多优秀的UI设计作品。 1.即时…...

sentinel介绍

介绍 官网地址 Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定&#xff0c;例如&#xff0c;表现为 timeout&#xff0c;异常比例升高的时候&#xff0c;则对这个资源的调用进行限制&#xff0c;并让请求快速失败&#xff0c;避免影响到其它的资源&…...

手把手教你怎么搭建自己的ChatGPT和Midjourney绘图(含源码)

AI程序采用NUXT3LARAVEL9开发&#xff08;目前版本V1.1.7&#xff09; 授权方式&#xff1a;三个顶级域名两次更换 1.AI智能对话-对接官方和官方反代&#xff08;markdown输出&#xff09;PS:采用百度与自用库检测文字 2.AI绘图-根据关键词绘图-增加dreamStudio绘画-增加mid…...

继承多态经典笔试题

注&#xff1a;visual studio复制当前行粘贴到下一行&#xff1a; CTRLD 杂项 调用子类重写的虚函数&#xff08;带默认参数&#xff09;&#xff0c;但参数用的是基类的虚函数中的默认参数&#xff1a; 这是由于参数是在编译时压入 试题一 交换两个基类指针指向的对象的vf…...

如何使用Typeface-Helper-自定义字体

随着科技的不断发展&#xff0c;人们对于视觉效果的要求也越来越高。在设计领域中&#xff0c;字体设计是非常重要的一环&#xff0c;因为它直接影响了整个设计的风格和品质。因此&#xff0c;越来越多的设计师开始寻找能够帮助他们自定义字体的工具。在这个过程中&#xff0c;…...

SubMain CodeIt.Right 2022.2 Crack

CodeIt.Right&#xff0c;从源头上提高产品质量&#xff0c;在编写代码时获取有关问题的实时反馈&#xff0c;支持最佳实践和合规性&#xff0c;自动执行代码审查&#xff0c;轻松避免与您的群组无关的通知&#xff0c;一目了然地了解代码库的运行状况 自动执行代码审查 使用自…...

文艺复兴的核心是“以人为本”:圣母百花大教堂(Duomo)

文章目录 引言I 圣母百花大教堂的建筑技术故事1.1 布鲁内莱斯基1.2 表现三维立体的透视画法II 美第奇家族的贡献2.1 科西莫德美第奇2.2 洛伦佐美第奇III 历史中的偶然性与必然性。3.1 文艺复兴的诞生其实是必然的事情3.2 文艺复兴的偶然性引言 从科技的视角再次理解文艺复兴,…...

校招失败后,在小公司熬了 2 年终于进了百度,竭尽全力....

其实两年前校招的时候就往百度投了一次简历&#xff0c;结果很明显凉了&#xff0c;随后这个理想就被暂时放下了&#xff0c;但是这个种子一直埋在心里这两年除了工作以外&#xff0c;也会坚持写博客&#xff0c;也因此结识了很多优秀的小伙伴&#xff0c;从他们身上学到了特别…...

【C++学习】函数模板

模板的概念 模板就是建立通用的模具&#xff0c;大大提高复用性。 模板的特点&#xff1a; 模板不可以直接使用&#xff0c;它只是一个模型 模板的通用不是万能的 基本语法 C中提供两种模板机制&#xff1a;函数模板和类模板 函数模板作用&#xff1a; 建立一个通用函数&…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...