Matlab GUI 设计(3):edit、slider、table数据同步

在GUI 的设计中,数据的直接输入有两种方式:edit 和 slider,他们之间经常需要同步,即表示同一个变量的 string值或者value值,当edit改变时,slider 跟着改变;同样当slider改变时,edit 也随着改变,并实时显示在 table 中。

1、根据GUIDE 建立GUI。打开GUI,在空白区域放置三个 uicontrol :slider、edit、table,如图所示。为了编辑的方便,把他们放在一个 panel 上。
三个控件的tag 分别是:slider1、edit1、UItable1;其中slider 的 属性中,Max:100,Min:-100;edit 的 string 值设为:num;
table 的data 中,设置 行、列的显示名。

Matlab GUI 设计(3):edit、slider、table数据同步_第1张图片

2、编辑 M 文件。打开对应的M文件,可以看到系统自动生成了四个函数框架:slider1_Callbackslider1_CreateFcnedit1_Callbackedit1_CreateFcn ,在 slider1_Callback 中添加代码

global a;
 set(handles.edit1,'string',num2str(get(hObject,'value')));
 a=str2num(get(handles.edit1,'string'));
 set(handles.uitable1,'data',[a,2*a]);

edit1_Callback中添加代码:

global a;
set(handles.slider1,'value',str2num(get(hObject,'string')));
a=str2num(get(handles.edit1,'string'));
set(handles.uitable1,'data',[a,2*a]);

利用函数 get 来取得句柄中的数据值,利用 set 俩改变句柄中数据的值,并利用global 在不同的控件中共享数据。

完整的回调函数如下:

function slider1_Callback(hObject, eventdata, handles)

 global a;
 set(handles.edit1,'string',num2str(get(hObject,'value')));
 a=str2num(get(handles.edit1,'string'));
 set(handles.uitable1,'data',[a,2*a]);


function slider1_CreateFcn(hObject, eventdata, handles)

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end




function edit1_Callback(hObject, eventdata, handles)

global a;
set(handles.slider1,'value',str2num(get(hObject,'string')));
a=str2num(get(handles.edit1,'string'));
set(handles.uitable1,'data',[a,2*a]);


function edit1_CreateFcn(hObject, eventdata, handles)

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

程序运行的结果如下:
Matlab GUI 设计(3):edit、slider、table数据同步_第2张图片

你可能感兴趣的:(Matlab)