【问题标题】:Display checkbox inside a listbox在列表框中显示复选框
【发布时间】:2014-02-21 15:34:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: matlab user-interface checkbox listbox


    【解决方案1】:

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

    1. com.jidesoft.swing.CheckboxList
    2. 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);

    【讨论】:

      【解决方案2】:

      没有“现成”的方法可以做到这一点 - 因为列表框只接受纯字符串作为条目。

      您可以“手动”绘制适合列表框区域的复选框,但这可能意味着需要大量工作才能使一切正常... 另一种选择是使用 java 组件 - 例如使用 matlab 中可用的 jide 组件。参见例如

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

      举几个例子。

      【讨论】:

      • 啊,这就是我所担心的 :( 我想我会使用视觉解决方法(按钮组/面板+复选框),我真的不想使用 Java...嗯,谢谢无论如何,至少我知道现在不可能:P
      • 您还可以查看未记录的 uigridcontaineruiflowcontainer - 它们可能会使布局更易于处理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多