2016-05-25 8 views
2

GUIでmatlabのuitabグループを使用しています。しかし、UItabgroupの1つの制限は、有効/無効機能の欠如です。私は、MATLAB共同体から関数を使用して他の代替を使用しようとしましたfindjObjectMATLABでuitabsを有効/無効にします

私は上記の機能を使用して次の方法を使用します。

jtabgroup=findjobj(tabgroup); 
jtabgroup.setEnableAt(false); % also I tried turning enable off for 
% for individual tabs using setEnabledAt(1,0) 

と私は次のエラー

Undefined function 'setEnabled' for input arguments of type 'handle.handle'. 

を取得誰かがこの問題で私を助けたり、私の有効/無効のタブのいくつかの代替方法を提案することができます。

+0

あなたは 'uitab'と' findjobj'という2つの異なるクラスを持っていますが、それらのクラスの機能を混在させてください! 'findjobj'は単純に' setEnableAt'関数をサポートしていません – obchardon

+0

あなたは全てのメソッドを表示するためにmethodsview(jtabgroup)を試すことができます。 – obchardon

+0

findjobjectを使ってメソッドを実装した人はほとんどいません。しかし私は彼らが採用した方法を確信していません。 – Agni

答えて

0

あなたが、そして、代わりにuitabの素晴らしいGUI Layout Toolbox使用する必要がありますすることができます。他の便利な機能の膨大な配列はもちろんのこと、タブから選択してタブを選択的に無効にすることができます。 FEXには、HG1(パッケージ)用とHG2用(uixパッケージ、下位互換性のあるuiextrasインターフェイス付き)の2つの提出物があります。

ここにHG2の例があります。​​のプロパティを'on'/'off'の値(1つのタブにつき1つ)の配列に設定する必要があります(ユーザーフレンドリーではありませんが、それ以外のものよりはるかに優れています)。

f = figure(); 
p = uix.TabPanel('Parent', f,'Padding', 5); 
uicontrol('Style', 'frame', 'Parent', p, 'Background', 'r'); 
uicontrol('Style', 'frame', 'Parent', p, 'Background', [.8 .8 .8]); 
uicontrol('Style', 'frame', 'Parent', p, 'Background', 'g'); 
p.TabTitles = {'Red', 'Gray', 'Green'}; 
p.Selection = 2; 
p.TabEnables = {'on','on','off'}; 

enter image description here

もう一つの提案は、純粋なJavaソリューションに頼ることであろう。これは明らかにあなたのタブ内にJavaコンポーネントを置くことができるだけであると仮定していますが、Axl以外のMatlab UIコンポーネントは、より優れた振る舞いと見た目の良いJava対応で簡単に置き換えることができます。

+0

あなたの答えをありがとう。ユーザーフレンドリーなAPIについてあまり気にしないのであれば、これは良い選択だと思います。 – Agni

+1

@PBCR、公正であるために、「uicontrol」のAPIはさらに悪いです。純粋なJavaを使用しない限り、それはあなたが得ることができる最高です。そして、彼らは私の好みにもっと "プロフェッショナル"に見えます。 –

+0

真実が合意されました。あなたの答えを受け入れるつもりです。別のGUIを設計するのに役立ちました。時々、私はmatlabのuicontrolsの限界に悩まされる – Agni

0

コメントで報告されているように、uitabにはenableというプロパティがありません。可能な回避策はuitabに属するuicontrolsを有効/無効にすることができ

BackgroundColor 
    BeingDeleted 
     BusyAction 
    ButtonDownFcn 
     Children 
     CreateFcn 
     DeleteFcn 
ForegroundColor 
HandleVisibility 
    Interruptible 
      Parent 
     Position 
    SizeChangedFcn 
      Tag 
      Title 
    TooltipString 
      Type 
    UIContextMenu 
      Units 
     UserData 

この

iutabオブジェクトのリストです。

ハンドルはchildrenプロパティに格納されているため、のuicontrolsのリストを取得できます。

ハンドルを取得したら、enableプロパティをonまたはoffのいずれかに設定できます。次のコードで

:各iutab一部uicontrolsにおける2つiutab

  • 図中
  • off`」に設定された初期enable状態で追加される二つを含む作成され

    • checkboxが追加され、2つのうちのuicontrolsが有効/無効にされます。uitab

    hanlesを取得し、uicontrolsが直接このことができますcheckbox

    % Create a Figure 
    f = figure; 
    % Add a uitabgroup 
    tabgp = uitabgroup(f,'Position',[.05 .05 .3 .8]); 
    % Add two uitab 
    tab1 = uitab(tabgp,'Title','Tab #1'); 
    tab2 = uitab(tabgp,'Title','Tab #2'); 
    % Add some uicontrols to the first uitab (initial status = disabled) 
    % Add a Pushbutton 
    uicontrol('parent',tab1,'style','pushbutton','unit','normalized', ... 
        'position',[.1 .1 .3 .1],'string','OK','enable','off') 
    % Add a checkbox 
    uicontrol('parent',tab1,'style','checkbox','unit','normalized', ... 
        'position',[.1 .3 .6 .1],'string','Checkbox #1','enable','off') 
    % Add a radiobutton 
    uicontrol('parent',tab1,'style','radio','unit','normalized', ... 
        'position',[.1 .6 .5 .1],'string','Radio #1','enable','off') 
    % Add another radiobutton 
    uicontrol('parent',tab1,'style','radio','unit','normalized', ... 
        'position',[.1 .5 .5 .1],'string','Radio #2','enable','off') 
    
    % Add some uicontrols to the first uitab 
    % Add a Pushbutton 
    uicontrol('parent',tab2,'style','pushbutton','unit','normalized', ... 
        'position',[.1 .1 .3 .1],'string','OK','enable','off') 
    % Add a checkbox 
    uicontrol('parent',tab2,'style','checkbox','unit','normalized', ... 
        'position',[.1 .3 .6 .1],'string','Checkbox #1','enable','off') 
    % Add a radiobutton 
    uicontrol('parent',tab2,'style','radio','unit','normalized', ... 
        'position',[.1 .6 .5 .1],'string','Radio #1','enable','off') 
    % Add another radiobutton 
    uicontrol('parent',tab2,'style','radio','unit','normalized', ... 
        'position',[.1 .5 .5 .1],'string','Radio #2','enable','off') 
    % Add two checkbox to the Figure to enable/disable the uicontrols in the 
    % uitab 
    uicontrol('parent',f,'style','checkbox','unit','normalized', ... 
        'position',[.4 .3 .6 .1],'string','Enable Tab 1 uicontrols', ... 
        'callback','tab1_c=get(tab1,''children'');e_d=''off'';if(get(gcbo,''value'') == 1) e_d=''on''; end;set(tab1_c(:),''Enable'',e_d)') 
    uicontrol('parent',f,'style','checkbox','unit','normalized', ... 
        'position',[.4 .4 .6 .1],'string','Enable Tab 2 uicontrols', ... 
        'callback','tab2_c=get(tab2,''children'');e_d=''off'';if(get(gcbo,''value'') == 1) e_d=''on''; end;set(tab2_c(:),''Enable'',e_d)') 
    

    enter image description here

    希望のcallbakとして書かれている有効/無効functin。

    Qapla」

  • +0

    あなたの答えをありがとう。私はすでにこの手続きを考えていました。しかし、私はタブへのアクセスを完全に無効にしたい。ユーザーがタブをクリックすることさえできないということです。 – Agni

    関連する問題