在我的(程序化)Matlab GUI中,我有一个列表框uicontrol
。
我想要的是在每个选项前面显示复选框。当用户单击该复选框时,它会被标记(并且稍后将在计算过程中考虑该元素)。如果用户单击标签,则所选选项的说明将显示在文本uicontrol
中,以通知用户该选项的含义。
基本上,我希望功能类似于安装程序,您可以在其中选择要安装的组件,并通过单击它们来获取有关所述组件的信息(不一定将它们标记为已选择)。
有没有办法用复选框或类似的方法做到这一点?
答案 0 :(得分:3)
实际上有2个可在Matlab中使用的内置控件:
com.jidesoft.swing.CheckboxList
com.mathworks.mwswing.checkboxlist.CheckBoxList
用法示例(我的Matlab-Java book中的更多详细信息):
jList = java.util.ArrayList; % any java.util.List will be ok
jList.add(0,'First');
jList.add(1,'Second');
jList.add(2,'Third');
jList.add(3,'and last');
jCBList = com.mathworks.mwswing.checkboxlist.CheckBoxList(jList);
jScrollPane = com.mathworks.mwswing.MJScrollPane(jCBList);
[jhCBList,hContainer] = javacomponent(jScrollPane,[10,10,80,65],gcf);
set(jCBList, 'ValueChangedCallback', @myMatlabCallbackFcn);
jCBModel = jCBList.getCheckModel;
jCBModel.checkAll;
jCBModel.uncheckIndex(1);
jCBModel.uncheckIndex(3);
答案 1 :(得分:2)
没有“准备好”的方式 - 因为列表框只将纯字符串作为条目。
您可以“手动”绘制适合列表框区域的复选框,但这可能意味着要完成所有工作的相当多的工作...... 另一种选择是寻找一个java组件 - 例如使用matlab中提供的jide组件。参见例如
http://undocumentedmatlab.com/blog/using-jide-combo-boxes/
举几个例子。