Java SWT封装Table显示数据

article/2025/9/14 4:11:14

        一个表格就类似于一张二维表。第一行为关系模型,就是每一列的列名。从第二行开始就是表的数据,简称元组。下面实现对其Table的封装。

         

        首先显示一个窗口。创建一个Table。将在showTableInfos()方法对Table表格进行封装。


import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.SWT;
public class Test {public static void main(String[] args) {Display display = Display.getDefault();Shell shell = new Shell();shell.setSize(900, 700);Table table = new Table(shell,SWT.BORDER | SWT.FULL_SELECTION);table.setBounds(189, 59, 500, 530);showTableInfos(table);shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}display.dispose();}public static void showTableInfos(Table table) {table.setHeaderVisible(true);table.setLinesVisible(true);}
}

        效果为:

         1.显示列。

               Table中的列用到的是TableColumn类用来实现。用setText()设置每一列的列名。

               在上述代码只需添加一个提供列名的字符串数组传入到showTableInfos()方法里面即可。


import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.SWT;public class Test {public static String[] sclnames = { "姓名", "编号", "年龄" };public static void main(String[] args) {Display display = Display.getDefault();Shell shell = new Shell();shell.setSize(900, 700);Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);table.setBounds(139, 59, 600, 530);showTableInfos(table, sclnames);shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}display.dispose();}public static void showTableInfos(Table table, String[] clnames) {table.setHeaderVisible(true);table.setLinesVisible(true);TableColumn column = null;for (int i = 0; i < clnames.length; i++) {column = new TableColumn(table, SWT.NONE);column.setWidth(200);column.setText(clnames[i]);}}
}

         显示效果:

         2.显示行。

        为了方便Table显示的数组能够呈现动态,我们对其从数据库读取出来的数组封装成ArrayList<HashMap<String,Object>>类型。 List用于存储多行,每一行数组为一个Map,Map里面每一个数值的对应是数据库的属性名为Key ,数值为 Value。 Value可以是任意类型,所以用到了Object类型。

        这个时候我们发现Map的存储的顺序会与每列对应的列名不一致,我们不能直接遍历,我们需要传一个数据库属性名的字符串数组,用于规范显示的数据能够与每一列的列名一致。

        在对其模拟读取的数据。在Table显示每一行的数组用到的是TableItem类。 用该类的setText(new String[]{ })来设置文本的值。

        


import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;import org.eclipse.swt.SWT;public class Test {public static void main(String[] args) {Display display = Display.getDefault();Shell shell = new Shell();shell.setSize(900, 700);Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);table.setBounds(139, 59, 600, 530);String[] clnames = { "姓名", "编号", "年龄" };String[] dbnames = { "cid","cname","cage"};HashMap<String,Object> student1 = new HashMap<String,Object>();student1.put("cid", "A001");student1.put("cname", "张三");student1.put("cage",20);List<HashMap<String,Object>> students = new ArrayList<HashMap<String,Object>>();students.add(student1);showTableInfos(table,clnames,dbnames,students);shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}display.dispose();}public static void showTableInfos(Table table, String[] clnames,String [] dbname,  List<HashMap<String,Object>> lists) {table.setHeaderVisible(true);table.setLinesVisible(true);TableColumn column = null;TableItem item = null;for (int i = 0; i < clnames.length; i++) {column = new TableColumn(table, SWT.NONE);column.setWidth(200);column.setText(clnames[i]);}for(HashMap<String,Object> maps:lists) {item = new TableItem(table,SWT.NONE);ArrayList<String> rowstr = new ArrayList<String>();for(int i =0 ;i<dbname.length;i++) {rowstr.add( String.valueOf(maps.get(dbname[i])    ));}item.setText((String[])rowstr.toArray(new String[] {}));}}
}

        这个时候我们就可以动态的在Table里面显示数组了。

        运行效果:


http://chatgpt.dhexx.cn/article/clmQVk0i.shtml

相关文章

SWT控件总结

控件palette 1.System Choose component 选择组件&#xff1a;允许选择组件类型并将其拖放到设计画布上 Tab Order标签的顺序&#xff1a;设置所选选项卡顺序 2.Composites Composite 复合&#xff1a;能够包含其他控件的控件 Group 集团&#xff1a;提供带有可选标题的蚀…

SWT和JFace应用笔记

SWT和JFace应用笔记 链接&#xff1a;https://pan.baidu.com/s/1To4Lhgan4xEr1iaFA0Rerg 提取码&#xff1a;63qm 1.SWT笔记 一.创建一个SWT程序有3个部分 1.初始化窗口:首先创建Dispaly对象和Shell对象。Display&#xff1a;对象封装了调用操作系统的有关方法Shell&#xf…

matlab swt函数,matlab swt 函数出错

matlab swt 函数出错 我在用matlab swt 函数分解信号时总是出现以下错误&#xff0c;麻烦各位高手告知该怎么修改&#xff0c;swt函数如何ERROR ... ---------------------------------------------------------------------------------------------------------------------…

【SWT】自定义数据表格

目的 使用SWT技术自定义数据表格&#xff0c;本文抛砖引玉&#xff0c;给出了SWT构建数据表格的基本思路和简单实现。更多特殊需求即表格功能实现待续…… 思路 数据表格由表格头与表格体两边部分组成。 表格头部分是固定的&#xff0c;其字段右侧包含一个简单的表格工具–…

【SWT】Lable 文字折行

目标 当Label 中的文字过多时&#xff0c;使得文字折行显示。 效果如图所示&#xff1a; 分析与实践 Label 自带样式是一行显示所有信息。当一行显示不下时&#xff0c;超出部分会被隐藏掉&#xff0c;当Label有足够长度时再将其展示出来。Label这种处理超出部分的方式很粗…

java swt 几种布局_实战SWT布局

fortune 阅读(577) 评论(0) 编辑 收藏 所属分类: java技术 标准的SWT布局类FillLayout&#xff1a;在容器中以相同的大小单行或单列的排列组件 RowLayout&#xff1a;以单行或多行的方式使用几个选项(fill,wrap,spacing,justify,type)定制组件的排列方式 GridLayout&#xff…

【SWT】内容分割线

目标 SWT 容器中画横向直线或竖向直线将容器中的内容分割开来。本文介绍了官方的两个示例&#xff0c;效果图见实践部分。 分析 SWT 中至少由两种方法画直线&#xff08;横向或纵向&#xff09; SWT 中的GC可以画直线 这种方法最容易想到&#xff0c;但实现起来比较麻烦&a…

SWT

strock width transform,全称笔画宽度变换&#xff0c;是一种局部的图像算子用于提取字符&#xff08;letter&#xff09;的笔画宽度作为图像特征。算法步骤如下&#xff1a; 分成三个部分&#xff1a; - 用canny算子计算梯度及方向 - SWT提取笔画宽度得到字符候选区域&am…

eclipse下搭建SWT图形界面开发环境

什么是SWT 参考&#xff1a;http://www.cppblog.com/baby-fly/archive/2009/10/20/99008.html 用java的人一定都知道AWT和Swing&#xff0c;而SWT(Standard Widget Toolkit)则是由Eclipse项目组织开发的一套完整的图形界面开发包&#xff0c;虽然当初仅仅是IBM为了编写Eclipse的…

SWT布局(Layouts)

每种类型操作系统对屏幕的定义不一样&#xff0c;在开发跨平台应用软件时&#xff0c;我们一般都会使用布局&#xff08;Layout&#xff09;来管理复合控件&#xff08;Composite&#xff09;中子控件的位置和大小。通过布局&#xff0c;程序员可以充分展示那些埋没已久的艺术细…

SWT简介

SWT简介 1. 为什么要使用SWT?  SWT是一个IBM开发的跨平台GUI开发工具包。在SWT之前&#xff0c;Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit)。虽然AWT框架也使用的是原生窗口部件(native widgets)&#xff0c;但是它一直未能突破LCD问题。LCD问…

[转]实时股票数据接口大全

from: http://www.21andy.com/blog/20090530/1313.html 实时股票数据接口大全 股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口 1.http/javascript接口取数据 1.1Sina股票数据接口 以大秦铁路&#xff08;股票代码&#xff1a;…

股票数据在线获取

推荐&#xff1a;使用如下地址注册tushare并分享此链接。 https://tushare.pro/register?reg133232 分享此链接&#xff0c;注册tushare. 以前是使用tushare等下载保存到本地数据库后进行计算分析。 现在不想维护本地数据库&#xff0c;想使用时直接在线获取数据。经查找如…

获取股票实时交易数据的方法

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 获取股票实时交易数据的方法 注:本文为原创文章,转载时请注明转载地址。炒股有一段时间…

实时股票数据接口 (转,以防有用)

&#xfeff;&#xfeff; http://blog.sina.com.cn/s/blog_510844b70102wrvf.html 实时股票数据接口 股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口 1.http/javascript接口取数据1.1Sina股票数据接口 以大秦铁路&#xff08;…

获取股票数据【实时更新股票数据、创建你的股票数据】、计算交易指标【买入、卖出信号、计算持仓收益、计算累计收益率】

在上一次获取股票数据【使用JQData查询行情数据、财务指标、估值指标】学习了使用JQData来查询股票相关数据&#xff0c; 这次则开始一点点构建咱们的量化交易系统了。 量化交易平台功能模块了解&#xff1a; 对于一个量化交易平台&#xff0c;它主要包含如下功能模块&#x…

使用Python获取股票实时数据和历史数据

决定新建一个专栏&#xff0c;专门研究股票数据的API接口。 由于不是混金融领域的人&#xff0c;百度调研了一会儿&#xff0c;没有找到合适的大公司维护的API接口。 yahoo-finance PyPI 这玩意架梯子都访问不到数据&#xff0c;不知道乍回事。许多大牛维护的pip包都是基于这…

Tushare免费获取股票数据:实时数据,历史数据,行情数据

一 操作手册 引导用户顺利开始使用Tushare Pro数据&#xff0c;以下步骤将带您开始Tushare数据之旅&#xff1a; 用户注册登录后可调用数据&#xff1a;https://tushare.pro/register?reg399205 二 如何获取TOKEN凭证 1、登录成功后&#xff0c;点击右上角->个人主页 2、…

如何用 Python 获取实时的股票数据?

这个我会&#xff01;先上图 这篇回答中&#xff0c;我将向你展示两种不同的代码版本&#xff08;加强版和一般版&#xff09; 代码运行环境说明&#xff08;非常重要&#xff09; Python版本要求 Python 3 需要安装的库 efinance 库的安装方法是&#xff1a;打开 cmd&#x…

怎么用Python获取股票的实时数据?

学习目标&#xff1a; 应用industry实现行业股票列表的获取应用history_bars实现股票合约历史行情数据获取应用get_fundamentals实现股票基本面数据获取使用query的过滤条件完成股票数据的过滤应用scheduler定时器实现股票数据定期获取 1、 数据接口种类 获取指定行业、板块…