在Matlab GUI中,我想将listbox1中的选定数据传输到listbox2

时间:2014-10-02 02:14:39

标签: matlab user-interface listbox

这种情况是,我知道如何将所有数据从一个列表框传输到另一个列表框,然后清除listbox1。我是这样做的: function pushbutton1_Callback(hObject,eventdata,handles)

StringInLB1 = get(handles.listbox1,' string');

集(handles.listbox2,'串',StringInLB1);

集(handles.listbox1,'串''&#39);

现在我的问题是:如何将一些选定的数据传输到listbox2?我" ctrl +单击" listbox1中的多个数据,但我如何使用thoes数据?

非常感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用

tmp = get(handles.listbox1,'string');

您将看到变量是什么样的。然后你可以使用像

这样的东西
set(handles.listbox1,'string',tmp{2});

答案 1 :(得分:0)

看起来您正在寻找为列表框回调分配一些功能。即,每次用户更改选择时,您都希望对数据执行某些操作。无论如何,这是我对你对@James回答的评论所理解的。

如果是这种情况,这里有一个示例代码,生成一个简单的GUI,用户可以通过单击列表框直接更改图表的颜色:

function DummyListBox

global hFig hListBox hPlot
ScreenSize = get(0,'ScreenSize');

hFig = figure('Visible','off','Position',[ScreenSize(3)/2,ScreenSize(4)/2,450,285]);

ColorString = {'Red';'Green';'Blue'}; % Define string populating the listbox

hListBox = uicontrol('Style','Listbox','String',ColorString,'Position',[315,150,70,50],'max',3,...
    'min',1,'Callback',@ListBox_Callback); %%// added 'min' and 'max' properties to select multiple items

hText = uicontrol('Style','Text','Position',[315,220,70,35],'String','Empty now'); %%// Add text box

hAxes = axes('Units','Pixels','Position',[50,60,200,185]);

set(hFig,'Visible','on')

x = 1:5*pi;
hPlot = plot(x,sin(x),'-r','Parent',hAxes); %display some data

    % Listbox callback: each time the selection changes, the color of the
    % plot changes accordingly.
    function ListBox_Callback(~,~)

       SelectedValues = get(hListBox,'Value'); % Get the values selected

    set(hText,'String',SelectedValues); % Uptdate the string in the textbox

    NewColor = ColorString{get(hListBox,'Value')};
    set(hPlot,'Color',NewColor)
    end

end

输出现在看起来像这样:

enter image description here

正如您所看到的,颜色发生变化的功能是列表框的回调。希望这是你想要的。如果没有,请更具体地说明你想要什么。谢谢!

编辑:正如您所看到的,我添加了一个文本框,以显示在列表框中选择多个项目时的外观。为此,您必须添加“分钟”。和一个' max'创建列表框时的属性。我将它们分别设置为1和3。 '价值'列表框的属性对应于从列表中选择的项目的实际编号。因此,如果您的3个项目是我的例子,则值可以是1,2,3或任意组合。它们显示在文本框中。您可以从这些值中获取相应的数据,存储在向量中。

所以回答你的问题,你可以写:

Data1 = ValuesVector(1)
Data2 = VectorValues(2)
... and so on