2014-01-29 4 views
0

В моем (программном) графическом интерфейсе Matlab у меня есть список uicontrol.Показать флажок в списке

Я хочу отображать флажки перед каждой опцией. Когда пользователь нажимает на этот флажок, он помечен (и элемент будет учитываться во время вычислений позже). Если пользователь нажимает на метку, описание выбранного параметра будет отображаться в тексте uicontrol, чтобы сообщить пользователю, что означает этот параметр.

В принципе, я хочу, чтобы функциональность была похожа на программы установки, где вы можете выбрать компоненты для установки и получить информацию об указанных компонентах, щелкнув по ним (что не обязательно означает их выделение).

Есть ли способ сделать это с помощью флажков или чего-то подобного?

ответ

2

Для этого не существует «готового» способа, так как в качестве записей используются только простые строки.

Вы можете «вручную» установить флажок, установленный в область списка, но это может означать довольно много работы, чтобы все работало ... Другой альтернативой является использование java-componentenent - например, используя компоненты jide, доступные в Matlab. См.

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

несколько примеров.

+0

Ага, вот чего я боялся :(Думаю, я просто пойду с визуальным обходным решением (buttongroup/panel + checkboxes), я действительно не хочу использовать Java ... Ну, спасибо вам в любом случае , по крайней мере, я знаю, что это невозможно сейчас: P – scenia

+0

Вы также можете взглянуть на недокументированный 'uigridcontainer' и' uiflowcontainer' - они могут упростить обработку макета. – sebastian

2

Есть на самом деле 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);

com.mathworks.mwswing.checkboxlict.CheckBoxList example

Смежные вопросы