2014-01-29 149 views
0

在我的(計劃)Matlab的GUI,我有一個列表框uicontrol顯示覆選框

我要的是在每個選項前面顯示一個複選框。當用戶點擊複選框時,它會被標記(並且在稍後的計算過程中將考慮該元素)。如果用戶點擊標籤,則所選選項的說明將以文字uicontrol的形式顯示,以通知用戶該選項的含義。

基本上,我希望類似的安裝程序,您可以選擇要安裝的組件和有關通過點擊他們說的組件(這並不一定將其標記爲選中)能獲取信息的功能。

有沒有辦法用複選框或類似的東西要做到這一點?

回答

2

有這樣做,沒有「現成」的方式 - 如列表框只需要簡單的字符串作爲條目。

您可以「手動」繪製安裝在列表框中的複選框,但這可能意味着相當多的工作才能使所有的工作都可以正常工作... 另一種選擇是使用java組件 - 例如,使用matlab中可用的jide組件。見例如

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

了幾個例子。

+0

啊,這就是我所擔心的:(我想我只是用一個可視化的解決方法(按鈕組/面板+複選框),我真的不想用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