即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

欢迎运用CSDN-markdown编辑器

编程语言 ErenTuring 19℃ 0评论
本文目录
[隐藏]

1.Matlab GUI控件之——uitable

uitable 或说 table,属于Matlab的GUI控件中相对冷门的控件,因此相关的教程要么少,要么不全,但这个控件还是很有价值的,下面详细介绍一下uitable的一些基本知识;

1.1.开始

添加Table控件


Table控件

1.2.初始化

初始化,要添加控件的CreateFcn函数。


添加Table的CreateFcn函数

之后在CreateFcn函数下,对其进行基础的设置。


Table 控件的数据实质上是cell类型,新建一个cell类型的data

% 在CreateFcn函数下具体的内容


function uitable1_CreateFcn(hObject, eventdata, handles)


Data = cell(3,2); %新建一个3行2列的元胞数组


% 设定具体的内容,如:


Data(:,1) = {'佳洁士-全优七效';


'佳洁士-3D炫白';


'黑人-茶倍健';}; %设置第1列为牙膏的产品名


Data(:,2) = {15;16;13}; %设置第2列为牙膏的单价


set(hObject, 'ColumnName', {'产品名','单价'}, 'data',Data) %将数据设置到uitable控件中

这里需要稍微介绍一下就是:


此处先自定义好的存储了内容的元胞数组,再用set函数具体传入数据到控件从而完成初始化。其语法大致是这样:


1. 首先传入控件的句柄,也就是控件的Tag,具体Tag都是自己设定的,我这是默认的: uitable1 。但可以看到,此处写的是hObject,因为这段初始化代码写在控件的CreateFcn函数下,其参数本身就有hObject,可以直接传入set函数。


2. 'ColumnName' 有基础的都很清楚,引号括起来是其属性,而紧跟其后则是该属性的具体设置的值。’ColumnName’代表是titable的列标题。


手段


3. 'data' 字段代表的就是数据,后面紧跟我们存储了内容的元胞数组 Data

1.3.更新

在使用中,难免需要对表格的数据进行更新,uitable的更新似乎显得有点繁琐,但代码实现并不麻烦,只是让人感觉不那么灵活。


具体来说:


1. 先获取其数据:tableData = get(handles.uitable1,'data'); 此时一般就是在别的函数下写的,所以传入Tag handles.uitable1。返回的tableData就是包含内容的元胞数组,可以肆意对其进行更改。


2. 之后再次:set(handles.uitable1,'data',tableData) 如果列数什么没有变动,则不需要再次设置列名。

1.4.进阶

  1. 很多时候 table 和 excel 表联合使用,但其实并没有特别需要注意的,无非是先写读excel表数据的代码,然后还是一样的流程,将包含数据的元胞数组set入table控件中去。
  2. 文字颜色,如果设置表格中文字的颜色,甚至不同的颜色呢?


    此处我是在网上找到一个很强的解决方案:


    ['' '高露洁-劲白' ''] 根本不像是matlab的语法,实现了指定单元格可以指定颜色。


    附上文章来源: http://www.ilovematlab.cn/thread-89772-1-1.html


    他的思路:“目前的uitable無法在單一表格內設置顏色,不過只要利用與java相同的特性


    就可以達到單一表格顏色的設置


    主要的特性就是能夠接受HTML的部分程序,我嘗試GUI的物件


    可以使用的物件有:listbox、popupmenu、uitable


    按鈕系列是乎也可以不過不穩定,而且並不是所有的HTML都有效果”


    【在下十分佩服,对于其原理我并没有做什么探究,不过那位作者的方法在table里真的很好用】


    举个我做的例子:


    data = cell(3,2); %新建一个三行四列的元胞数组


    data{1,1} = ['' '佳洁士-全优七效' ''];


    data{2,1} = ['' '佳洁士-3D炫白' ''];


    data{3,1} = ['' '黑人-茶倍健' ''];


    temp = {15; 16; 13};


    data{1,2} = ['' num2str(temp{1}) ''];


    data{2,2} = ['' num2str(temp{2}) ''];


    data{3,2} = ['' num2str(temp{3}) ''];

实际效果

  1. 再者,一些属性可以直接在属性里设置,分别有:Property 和 Table Property


    属性


    Tip:比如,列的宽度就可以直接在 Table Property Editor 里设置。

先这么多,后续再补充~~~~

转载请注明:CodingBlog » 欢迎运用CSDN-markdown编辑器

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情