matlab GUI 删除表格数据报错问题以及按钮背景图片加载问题

 1.删除表格数据报错

首先说一下删除表格的问题,先看一下源代码:

使用的是 表格的选择回调函数:CellSelectionCallback,该函数的作用是获取用户做选择的数据信息。其中的eventdata中的Indices的返回值是一个1*2矩阵,是用户所选行和的列位置,上图的获取行索引,就是获得行位置,以便进行删除工作。这样做是可以达到目的,但是后面会有一个报错的声音,报错提示如下图:

 

既然它说索引超出数组范围,不如我们打数组输出看一眼:

可以看得出来我们的操作实际上是达到了预期效果,一开始获取的行索引并没有问题,我们也得到了我们想要得到的数据,但是后面的hang变成了0*2的空矩阵,这是为什么呢

仔细想了想,是因为我们做了删除工作,第一次索引没有问题,当你把数据删除以后,再次索引,数据并不存在了,才会导致行变成空矩阵,所以后面的赋值当然会出错

这里的索引和赋值进行了两次操作,为什么我们选了一次却是进行了两次操作,这个并不难想到,第一次是你手动选的,而第二次是你在进行删除操作后函数内部选的,第一次是删除前,第二次是删除后,第一次的操作是没有问题的,错误出现在第二次的赋值上面,只需要让它不进行第二次赋值就可以解决了,所以解决方法如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%             表格删除数据功能分键一              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function uitable1_CellSelectionCallback(hObject, eventdata, handles)
global STOP;
STOP =1;
newData = get(hObject,'data'); %获取数据矩阵
hang = eventdata.Indices ;%获取行索引
L = size(hang);
if L(1)>0
    hangIndex = hang(1); %行索引赋值
    handles.hangIndex = hangIndex;  %把行索引添加到结构体
end
guidata(hObject, handles);  %更新结构体

是的,加一个判断语句,当索引不为空的时候再进行赋值记好了!!!!!!!!!!!!!!

问题解决,有点开心。。。。。。。。。

2.按钮背景图片加载问题

首先,有两种方法,

第一种,在gui的open函数里面代码写入:

function player_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;
A=imread('go.png');   %读取图片
set(handles.delete,'CData',A);  
guidata(hObject, handles);

handles.delete是想要设置按钮的tag值

第二种,编辑器中直接读取:

 

这个CData就是啦,方法就是先读入工作区,再把矩阵名写入Cdata,但是,这个东西,他只要三维真彩矩阵,嗯,试了一下,jpg效果最好。

如果你加载进去,发现按钮的背景完全不是你想要的样子,这就对了,这个函数不是自适应的,你要自己匹配按钮的像素与背景的像素,所以:这么设置就好了:

 

首先Units设置成pixels,然后position中的width和height设置背景图标的长和宽,就可以完美契合了。。。。。

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值