idea开发jface、swt环境搭建

背景

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

下载套件

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

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

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

等待页面加载完成后, 点击选择国内镜像下载:
idea开发jface、swt环境搭建_第1张图片

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

配置全局jdk

此时在idea中打开Project Structure
idea开发jface、swt环境搭建_第2张图片
选中Global Libraies并在右方添加所需包:
idea开发jface、swt环境搭建_第3张图片

  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
    }
}

运行结果:
idea开发jface、swt环境搭建_第4张图片

打包

idea开发jface、swt环境搭建_第5张图片

参考

  1. WindowBuilder、SWT、jface

你可能感兴趣的:(swt学习,intellij-idea,java,ide)