在列表框中显示复选框

时间:2014-01-29 17:04:06

标签: matlab user-interface checkbox listbox

在我的(程序化)Matlab GUI中,我有一个列表框uicontrol

我想要的是在每个选项前面显示复选框。当用户单击该复选框时,它会被标记(并且稍后将在计算过程中考虑该元素)。如果用户单击标签,则所选选项的说明将显示在文本uicontrol中,以通知用户该选项的含义。

基本上,我希望功能类似于安装程序,您可以在其中选择要安装的组件,并通过单击它们来获取有关所述组件的信息(不一定将它们标记为已选择)。

有没有办法用复选框或类似的方法做到这一点?

2 个答案:

答案 0 :(得分:3)

实际上有2个可在Matlab中使用的内置控件:

  1. com.jidesoft.swing.CheckboxList
  2. com.mathworks.mwswing.checkboxlist.CheckBoxList
  3. 用法示例(我的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);

    com.mathworks.mwswing.checkboxlict.CheckBoxList example

答案 1 :(得分:2)

没有“准备好”的方式 - 因为列表框只将纯字符串作为条目。

您可以“手动”绘制适合列表框区域的复选框,但这可能意味着要完成所有工作的相当多的工作...... 另一种选择是寻找一个java组件 - 例如使用matlab中提供的jide组件。参见例如

http://undocumentedmatlab.com/blog/using-jide-combo-boxes/

举几个例子。