【发布时间】:2017-08-11 17:42:35
【问题描述】:
我使用三个弹出菜单创建了一个绘图仪:一个用于 X 变量,一个用于 Y,一个用于图形名称。 When a figure name (number) is selected, its callback function grabs strings from X and Y popup menus, search these from a loaded dataset, and plots them on a selected figure.
我想做的是在弹出菜单上进行多项选择。我进行了相当多的研究,发现弹出菜单以常规记录方式没有这种功能。
我不想也几乎不能使用列表框的原因是我的GUI从上到下有很多面板;每个都包含上面提到的三个弹出菜单。每个面板代表一个数据集。这意味着如果我选择并加载 10 个 .MAT 文件,将创建一个从上到下有 10 个面板的 GUI。每个数据集可以有多达 100 个或更多的变量。列表框的高度(例如,仅显示 10 个变量)和 X(倍)10 上下的一些边距将创建一个基本上无法使用的巨大 GUI。
我遇到了一些 java 脚本讨论,可能通过使用带有一些严厉警告的 JcomboBox 来工作,但我实际上并没有找到它的代码。
有办法吗?
想象一下,在下面的快照中,Y 轴弹出菜单中的下拉列表实际上是一个列表框,并且所有面板也具有相同高度的列表框。很难有效地使用这个工具。我想要做的是选择一个 X 变量,例如 TIME(这是弹出菜单的方式),并且能够选择多个 Y 变量。然后,当我选择一个图形时,绘图仪将根据所选 X 变量绘制这些 Y 变量。我可以迭代地做到这一点。我们小组中有人要求提供此功能,我正在研究其可能性。
我合并了@excaza 的想法,我很难弄清楚如何在选择要绘制的图形时保留选定的 y 变量名称。见下图。
这绝对是朝着正确的方向发展。我现在的问题是我可以在哪里保留选定的索引信息。下面的函数是“Y轴”按钮的回调函数。我正在考虑将选定的 y 变量名称存储到其 Tag 属性中,但我不确定这是否是个好主意。我当然也不想创建一个全局变量。有什么想法吗?
function select_yvar(handle,event,list_yvar)
plot_h = get(get(get(handle.Parent,'Parent'),'Parent'),'Parent');
WinOnTop(plot_h,false);
[yvar_sel,~] = listdlg('Name', 'Variables', 'PromptString', 'Select variable(s)',...
'SelectionMode', 'multiple', 'ListString', list_yvar);
【问题讨论】:
-
我不太明白你想要达到什么目的,有你想要的截图吗?你总是可以制作自己的弹出窗口,但这整件事听起来像是 UX 的噩梦。您真的需要为每个数据集绘制多个唯一变量,而不仅仅是跨所有数据集绘制相同的变量吗?
-
@excaza 感谢您的回复。我希望我的问题现在更清楚了。
标签: matlab