Matlab GUI控件之——uitable

天涯浪子 提交于 2019-11-27 14:36:57

Matlab GUI控件之——uitable

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

开始

添加Table控件
Table控件

初始化

初始化,要添加控件的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

更新

在使用中,难免需要对表格的数据进行更新,uitable的更新似乎显得有点繁琐,但代码实现并不麻烦,只是让人感觉不那么灵活。
具体来说:
1. 先获取其数据:tableData = get(handles.uitable1,'data'); 此时一般就是在别的函数下写的,所以传入Tag handles.uitable1。返回的tableData就是包含内容的元胞数组,可以肆意对其进行更改。
2. 之后再次:set(handles.uitable1,'data',tableData) 如果列数什么没有变动,则不需要再次设置列名。

进阶

  1. 很多时候 table 和 excel 表联合使用,但其实并没有特别需要注意的,无非是先写读excel表数据的代码,然后还是一样的流程,将包含数据的元胞数组set入table控件中去。
  2. 文字颜色,如果设置表格中文字的颜色,甚至不同的颜色呢?
    此处我是在网上找到一个很强的解决方案:
    ['<html><FONT color=#76AB2F">' '高露洁-劲白' '</Font></html>'] 根本不像是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} = ['<html><FONT color=#0071BC">' '佳洁士-全优七效' '</Font></html>'];
    data{2,1} = ['<html><FONT color=#D85218">' '佳洁士-3D炫白' '</Font></html>'];
    data{3,1} = ['<html><FONT color=#ECB01F">' '黑人-茶倍健' '</Font></html>'];
    temp = {15; 16; 13};
    data{1,2} = ['<html><FONT color=#0071BC">' num2str(temp{1}) '</Font></html>'];
    data{2,2} = ['<html><FONT color=#D85218">' num2str(temp{2}) '</Font></html>'];
    data{3,2} = ['<html><FONT color=#ECB01F">' num2str(temp{3}) '</Font></html>'];

实际效果

  1. 再者,一些属性可以直接在属性里设置,分别有:Property 和 Table Property
    属性
    Tip:比如,列的宽度就可以直接在 Table Property Editor 里设置。

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!