MATLAB Answers

0

Variable amount of checkboxes in listbox (programmatic GUI)

Asked by Jonathan on 26 Aug 2014
Latest activity Commented on by André Luiz Lourenço on 8 May 2019
I have in my programmatic GUI the following listbox:
h.listbox = uicontrol('style','listbox','units','pixels',...
'position',[10,175,200,200],...
'string',components_index);
The entire program gives me the following output:
What I now want, is that in front of every stock, I have a checkbox. Keep in mind that the amount of stocks is variable.
Can anyone point towards a solution?
Thanks in advance,
Jonathan

  0 Comments

Sign in to comment.

2 Answers

Answer by Adam
on 26 Aug 2014
 Accepted Answer

I don't think that is possible with Matlab UI controls. However, if you don't mind doing some experimentation with undocumented controls, the following information on Yair Altman's excellent blog may help:

  2 Comments

I eventually went for uitable. YIDE combo boxes is a bit difficult for my programming skills :P. But thanks!
If anyone is interested, using the following code will give want I wanted.
components_index = {'one1','two2','three3'};
h.table = uitable('units', 'pixels', 'position', [10, 100, 200, 200], ...
'columnname', {'Yes/No'},...
'columnformat',{'logical'},...
'ColumnEditable', true,...
'rowname',components_index,...
'data',false(numel(components_index),1));
Yeah, I've shied away from the hardcore Jide UI programming too for now and have also been using uitable of late. I don't like it at all and it took me probably as long to get right as Jide would, but it does a job so glad you got that to work for you.

Sign in to comment.


Answer by Yair Altman on 4 Sep 2014

There are actually 2 built-in controls that you could use within Matlab:
  1. com.jidesoft.swing.CheckboxList
  2. com.mathworks.mwswing.checkboxlict.CheckBoxList
Usage example (more details in my 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 Comments

how to loop over multiple files selection in this....
How can I put this listbox into a panel control?

Sign in to comment.