idea开发jface、swt环境搭建

news2024/9/27 12:14:16

背景

  1. jfaceswt很难找到合适的maven仓库来下载配套的版本
  2. ideaeclipse套件不友好
  3. eclipsewindowbuilder固然很好, 但本人更喜欢idea编程, 互相取长补短

下载套件

进入swt下载界面
以当前最新的4.29为例, 点击:
在这里插入图片描述

找到全部并点击超链接:
在这里插入图片描述

这一步可能比较慢, 稍等一会…

等待页面加载完成后, 点击选择国内镜像下载:
在这里插入图片描述

此时应该就开始下载了, 下载完成后解压至E:\repository\mvn\repository-4.29

配置全局jdk

此时在idea中打开Project Structure
在这里插入图片描述
选中Global Libraies并在右方添加所需包:
在这里插入图片描述

  1. 不断重复第3、4步直至所有包导入完成
  2. 选择Global Libraies是为了后期本地打包方便

下面是我们最终需要添加的包:

E:\repository\mvn\repository-4.29\plugins\org.eclipse.core.commands_3.11.100.v20230708-0916.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.core.contenttype_3.9.100.v20230630-1232.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.core.jobs_3.15.0.v20230808-1403.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.core.resources.win32.x86_64_3.5.500.v20220812-1420.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.core.runtime_3.29.0.v20230726-0617.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.equinox.common_3.18.100.v20230730-1117.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.equinox.preferences_3.10.300.v20230630-1303.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.jface.databinding_1.15.100.v20230708-0916.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.jface.text_3.24.100.v20230727-0604.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.jface_3.31.0.v20230821-1552.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.swt.win32.win32.x86_64_3.124.100.v20230825-1346.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.swt_3.124.100.v20230825-1346.jar
E:\repository\mvn\repository-4.29\plugins\org.eclipse.text_3.13.100.v20230801-1334.jar

示例

此时环境已经搭建完成, 我们写个示例验证下:

import org.eclipse.jface.viewers.*
import org.eclipse.swt.SWT
import org.eclipse.swt.graphics.Image
import org.eclipse.swt.layout.FillLayout
import org.eclipse.swt.widgets.*
import javax.swing.CellEditor

fun main() {
    val display = Display()
    val shell = Shell(display)
    shell.layout = FillLayout()
    // 创建 TableViewer
    val viewer = TableViewer(shell, SWT.BORDER or SWT.FULL_SELECTION)
    val table: Table = viewer.table
    table.headerVisible = true
    table.linesVisible = true
    // 创建表格列
    val column = TableColumn(table, SWT.NONE)
    column.setText("姓名")
    column.setWidth(100)
    // 设置内容提供器
    viewer.setContentProvider(MyContentProvider())
    // 设置标签提供器
    viewer.setLabelProvider(MyLabelProvider())

    // 添加双击事件监听器
    viewer.addDoubleClickListener { event ->
        if (viewer.getSelection() != null) {
            viewer.editElement(viewer.getSelection(), 0)
        }
    }
    // 设置输入数据
    viewer.setInput(arrayOf("张三", "李四", "王五"))
    shell.pack()
    shell.open()

    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep()
        }
    }

    display.dispose()
}

internal class MyContentProvider : IStructuredContentProvider {
    override fun dispose() {
    }

    override fun inputChanged(viewer: Viewer?, oldInput: Any?, newInput: Any?) {
    }

    override fun getElements(inputElement: Any?): Array<Any?> {
        return if (inputElement is Array<*>) {
            inputElement as Array<Any?>
        } else arrayOfNulls(0)
    }
}

internal class MyLabelProvider : LabelProvider(), ITableLabelProvider {
    override fun getColumnText(element: Any?, columnIndex: Int): String {
        return if (element is String) {
            element
        } else ""
    }

    override fun getColumnImage(element: Any?, columnIndex: Int): Image? {
        return null
    }
}

运行结果:
在这里插入图片描述

打包

在这里插入图片描述

参考

  1. WindowBuilder、SWT、jface

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1236189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

02-微服务的拆分规则和基于RestTemplate的远程调用

微服务的拆分与远程调用 创建父工程 任何分布式架构都离不开服务的拆分, 微服务也是一样 , 微服务的拆分遵守三个原则 微服务需要根据业务模块拆分,不同微服务不要重复开发相同业务每个微服务都有自己独立的数据库, 不要直接访问其他微服务的数据库微服务可以将自己的业务暴…

第28期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

多样式按钮

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-…

使用 ClickHouse 做日志分析

原作&#xff1a;Monika Singh & Pradeep Chhetri 这是我们在 Monitorama 2022 上发表的演讲的改编稿。您可以在此处找到包含演讲者笔记的幻灯片和此处的视频。 当 Cloudflare 的请求抛出错误时&#xff0c;信息会记录在我们的 requests_error 管道中。错误日志用于帮助解…

OpenHarmony 4.1计划明年Q1发布, 5.0预计Q3发布

据HarmonyOS官方组织透露&#xff0c;OpenHarmony 4.0 版本已于 10 月 26 日正式发布&#xff0c;开发套件同步升级到 API 10。开放原子开源基金会现更新了 OpenHarmony 4.1&5.0 版本路线图。据介绍&#xff0c;OpenHarmony 4.1 Beta 版本预计将于年底完成测试并发布&#…

如何用 GPTs 帮你写科研项目申请书?

&#xff08;注&#xff1a;本文为小报童精选文章&#xff0c;已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费&#xff09; 需求 学生们往往会觉得&#xff0c;写开题报告是个苦差事。但他们或许不知道&#xff0c;老师们写起科研项目申请书&#xff0c;压力远比他们…

RK3568平台开发系列讲解(Linux系统篇)kernel config 配置解析

🚀返回专栏总目录 文章目录 一、图形化界面的操作二、Kconfig 语法简介三、.config 配置文件介绍四、deconfig 配置文件沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配…

Kafka 控制器(controller)

Kafka 控制器&#xff08;controller&#xff09; 在kafka集群中 会存在一个或者多个broker&#xff08;一个服务器就是一个broker&#xff09;&#xff0c;其中有一个broker会被选举为控制器 kafka controller &#xff0c;负责管理整个集群中所有副本、分区的状态&#xff0…

2021秋招-数据结构-栈、队列、数组、列表

栈、队列、数组、列表 实现方式 队列 class Queue:def __init__(self):self.items []def enqueue(self, item):self.items.append(item)def dequeue(self):return self.items.pop(0)def empty(self):return self.size() 0def size(self):return len(self.items)应用: 约瑟…

shell 脚本语句

目录 条件语句 test 命令 比较整数数值 字符串比较 命令举 条件逻辑测试操作 组合写法 举例 双中括号 ​编辑 ( ) / { } if 语句的结构 case 语句 脚本举例 识别 yes 和 no 脚本 检查磁盘使用情况脚本 新建用户以及随机设置用户密码的脚本 补充命令 [RANDOM…

Python+Qt虹膜检测识别

程序示例精选 PythonQt虹膜检测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonQt虹膜检测识别》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用推…

【C++进阶之路】第十一篇:C++的IO流

文章目录 1. C语言的输入与输出2. 流是什么3. CIO流3.1 C标准IO流3.2 C文件IO流 4.stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。prin…

京东数据分析(京东数据采集):2023年10月京东平板电视行业品牌销售排行榜

鲸参谋监测的京东平台10月份平板电视市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;10月份&#xff0c;京东平台上平板电视的销量将近77万&#xff0c;环比增长约23%&#xff0c;同比则下降约30%&#xff1b;销售额为21亿&#xff0c;环…

大数据Doris(二十七):Routine Load数据导入演示

文章目录 Routine Load数据导入演示 一、启动kafka集群(三台节点都启动) 二、创建topic

「MACOS限定」 如何将文件上传到GitHub仓库

介绍 本期讲解&#xff1a;如何在苹果电脑上上传文件到github远程仓库 注&#xff1a;写的很详细 方便我的朋友可以看懂操作步骤 第一步 在电脑上创建一个新目录&#xff08;文件夹&#xff09; 注&#xff1a;创建GitHub账号、新建github仓库、git下载的步骤这里就不过多赘…

数据库基本操作--------高级MySQL语句

一、高级SQL语句 1、SELECT ----显示表格中一个或数个栏位的所有资料 语法&#xff1a;SELECT “栏位” FROM “表名”; SELECT Store_Name FROM Store_Info; 2、DISTINCT ----不显示重复的资料 语法&#xff1a;SELECT DISTINCT “栏位” FROM “表名”; SELECT DISTINCT Sto…

Docker快速搭建RTMP服务(tiangolo/nginx-rtmp:Docker + Nginx+ nginx-rtmp-module)

Linux Docker快速搭建多媒体/视频流的 RTMP 服务 第一步 安装Docker 点击这里查看 第二步 拉取并运行镜像 tiangolo/nginx-rtmp/ docker pull tiangolo/nginx-rtmp docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmpOBS客户端测试 OBS客户端设置直播的推…

【python笔记】客户运营 - cohort分析

一、数据 本文涉及数据下载链接。 二、数据预处理 2.1 读取数据 import pandas as pddf pd.read_csv(your_path/Year 2010-2011.csv, encodingISO-8859-1) df.head()2.2 检查数据 检查空值情况 df.isna().sum() # 结果 Invoice 0 StockCode 0 De…

LeetCode 热题100——栈与队列专题(三)

一、有效的括号 20.有效的括号&#xff08;题目链接&#xff09; 思路&#xff1a; 1&#xff09;括号的顺序匹配&#xff1a;用栈实现&#xff0c;遇到左括号入&#xff0c;遇到右括号出&#xff08;保证所出的左括号与右括号对应&#xff09;&#xff0c;否则顺序不匹配。 2…

【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

在Linux系统中先安装java的JDK 然后编写下列service.sh脚本&#xff0c;并根据自己的需求只需要修改export的log_path、exec_cmd参数即可 # 配置运行日志输出的路径 export log_path/usr/local/project/study-pro/logs # 当前服务运行的脚本命令 export exec_cmd"nohup /u…