uitreenode
ツリー ノード コンポーネントの作成
構文
説明
は新しい Figure ウィンドウ内にあるツリーの内部でツリー ノード UI コンポーネントを作成し、node
= uitreenodeTreeNode
オブジェクトを返します。MATLAB® は関数 uifigure
を呼び出して Figure を作成します。
は、指定した親コンテナーにツリー ノードを作成します。親コンテナーは node
= uitreenode(parent
)Tree
または TreeNode
オブジェクトです。
は 1 つ以上の node
= uitreenode(___,Name,Value
)Name,Value
のペアの引数を使用して、TreeNode
のプロパティ値を指定します。前述の構文のいずれかを使用する場合に、Name,Value
を引数の最後の組として指定します。
例
入れ子ノードをもつツリーの作成
Sample Data
という名前の親ノードを Sample 1
という名前の子ノードと共に含むツリーを作成します。ツリーを展開すると、両方のノードが表示されます。
fig = uifigure; t = uitree(fig); parent = uitreenode(t,"Text","Sample Data"); child = uitreenode(parent,"Text","Sample 1"); expand(t)
特定の場所へのツリー ノードの追加
親ノードと子ノードをもつツリーを作成します。ツリーを展開すると、両方のノードが表示されます。
fig = uifigure; t = uitree; p = uitreenode(t,"Text","Teas"); c1 = uitreenode(p,"Text","Green Tea"); expand(t);
新しい子ノードをツリーの c1
ノードの上に追加します。
c2 = uitreenode(p,c1,"before","Text","Oolong Tea");
ツリー ノード選択用のコールバックの作成
スポーツ別にグループ分けされたアスリート名を表示するアプリを作成します。アプリ ユーザーが名前をクリックすると、MATLAB はそのアスリートに関するデータを表示します。
ツリー、入れ子にされたツリー ノードのセット、およびツリーのコールバック関数を作成するための次のコマンドを含む mytreeapp.m
というプログラム ファイルを作成します。SelectionChangedFcn
プロパティは、ユーザーがツリーのノードをクリックしたときに実行する関数を指定します。
function mytreeapp fig = uifigure; t = uitree(fig,"Position",[20 20 150 150]); % Assign callback in response to node selection t.SelectionChangedFcn = @nodechange; % First level nodes category1 = uitreenode(t,"Text","Runners","NodeData",[]); category2 = uitreenode(t,"Text","Cyclists","NodeData",[]); % Second level nodes. % Node data is age (y), height (m), weight (kg) p1 = uitreenode(category1,"Text","Joe","NodeData",[40 1.67 58] ); p2 = uitreenode(category1,"Text","Linda","NodeData",[49 1.83 90]); p3 = uitreenode(category2,"Text","Rajeev","NodeData",[25 1.47 53]); p4 = uitreenode(category2,"Text","Anne","NodeData",[88 1.92 100]); % Expand the tree expand(t); % Create the function for the SelectionChangedFcn callback % When the function is executed, it displays the data of the selected item function nodechange(src,event) node = event.SelectedNodes; display(node.NodeData); end end
ユーザーが mytreeapp
を実行してツリーのノードをクリックすると、MATLAB はそのノードの NodeData
を表示します。
table データに基づくツリー ノードの生成
table のデータに基づいてノードを追加するツリーを作成します。
UI コンポーネントを保持するグリッド レイアウト マネージャーをもつ Figure を作成します。電力会社の停電に関するサンプル データを読み込み、データを表示するテーブル UI コンポーネントを作成します。次にツリーを作成して、停電した地域および原因をリストするノードを保持します。
fig = uifigure; gl = uigridlayout(fig,[1 2]); gl.ColumnWidth = {'2x','1x'}; T = readtable("outages.csv"); T = T(1:20,["Region","OutageTime","Loss","Cause"]); tbl = uitable(gl,"Data",T); tr = uitree(gl);
ツリーに表示する table 変数を指定します。これらの変数それぞれに対して、テキストが変数名である最上位ノードを作成します。変数に対する table エントリを categorical 配列に変換し、カテゴリのリストを names
として返すことにより、関連するデータを抽出します。次に、カテゴリをループします。各要素に対して、適切な親ノードの下でツリーにノードを追加します。
vars = ["Region","Cause"]; for k1 = 1:length(vars) var = vars{k1}; varnode = uitreenode(tr,"Text",var); rows = T{:,var}; names = categories(categorical(rows)); for k2 = 1:length(names) text = names{k2}; uitreenode(varnode,"Text",text); end end
ツリーを展開すると、すべてのノードが表示されます。
expand(tr)
ファイル タイプを示すツリー ノードのスタイルの決定
異なるファイル タイプを視覚的に区別できるように、ファイル構造を展示するツリー中のノードのスタイルを決定します。
ツリー UI コンポーネントを作成します。各最上位ノードはフォルダーを表します。各子ノードはそのフォルダー中のファイルを表します。ツリーを展開すると、すべてのノードが表示されます。
fig = uifigure("Position",[300 300 350 400]); t = uitree(fig); % Parent nodes n1 = uitreenode(t,"Text","App 1"); n2 = uitreenode(t,"Text","App 2"); n3 = uitreenode(t,"Text","Images"); % Child nodes n11 = uitreenode(n1,"Text","myapp1.m"); n21 = uitreenode(n2,"Text","myapp2.m"); n22 = uitreenode(n2,"Text","app2callback.m"); n31 = uitreenode(n3,"Text","peppers.png"); expand(t)
3 つのスタイルを作成します。1 つはフォントの太さが太字、1 つはフォントの角度がイタリック、1 つはアイコンです。
dirStyle = uistyle("FontWeight","bold"); mStyle = uistyle("FontAngle","italic"); imgStyle = uistyle("Icon","peppers.png");
太字のスタイルを最上位ノードに適用して、フォルダーを表すノードを区別します。イタリックのスタイルを App 1
ノードおよび App 2
ノードの子に適用して、MATLAB プログラム ファイルを表すノードを区別します。最後に、イメージ ファイルを表すノードにアイコンのスタイルを適用し、イメージのプレビューを表示します。
addStyle(t,dirStyle,"level",1) addStyle(t,mStyle,"node",[n1.Children;n2.Children]) addStyle(t,imgStyle,"node",n31)
ツリー ノード間でのコンテキスト メニューの共有
ツリー コンポーネントのコンテキスト メニューを作成します。コンテキスト メニューをツリー内の最上位ノードすべてに割り当てます。
現在のフォルダー内の新規スクリプトに、UI figure を作成します。次に、4 つの最上位ノードと入れ子ノードのセットをもつツリーを作成します。
fig = uifigure; t = uitree(fig,"Position",[20 200 175 100]); category1 = uitreenode(t,"Text","Runners"); r1 = uitreenode(category1,"Text","Joe"); r2 = uitreenode(category1,"Text","Linda"); category2 = uitreenode(t,"Text","Cyclists"); c1 = uitreenode(category2,"Text","Rajeev"); category3 = uitreenode(t,"Text","Hikers"); h1 = uitreenode(category3,"Text","Jack"); category4 = uitreenode(t,"Text","Swimmers"); s1 = uitreenode(category4,"Text","Logan");
ユーザーがクリックして単一のツリー ノードまたはすべてのツリー ノードを展開できるメニュー項目を 1 つとサブメニューを 2 つ備えた、コンテキスト メニューを作成します。各サブメニューに対してコールバック関数 MenuSelectedFcn
を指定し、ユーザーがメニュー オプションを選択すると実行されるようにします。関連するアプリ オブジェクトを入力として各関数に渡し、コールバック関数内からアプリ データにアクセスします。
cm = uicontextmenu(fig); m1 = uimenu(cm,"Text","Expand..."); sbm1 = uimenu(m1,"Text","This Node", ... "MenuSelectedFcn",{@expandSingle,fig}); sbm2 = uimenu(m1,"Text","All Nodes", ... "MenuSelectedFcn",{@expandAll,t});
各ノードの ContextMenu
プロパティを ContextMenu
オブジェクトに設定することで、コンテキスト メニューを最上位のツリー ノードに割り当てます。
category1.ContextMenu = cm; category2.ContextMenu = cm; category3.ContextMenu = cm; category4.ContextMenu = cm;
ファイルの下部で、コールバック関数 expandSingle
および expandAll
を定義します。MATLAB がすべてのコールバック関数に渡すソースとイベント データを受け入れるように、関数を定義します。
関数 expandSingle
を定義して、ツリーを含む UI figure オブジェクトも受け入れるようにし、また、Figure の CurrentObject
プロパティを使用して、コンテキスト メニューを表示するためにクリックされたツリー ノードを特定するようにします。次に、ノードを展開します。
ツリー オブジェクトも受け入れるように関数 expandAll
を定義し、ツリー内のすべてのノードを展開します。
function expandSingle(src,event,f) node = f.CurrentObject; expand(node) end function expandAll(src,event,t) expand(t) end
スクリプトを保存して実行します。任意の最上位のツリー ノードを右クリックし、コンテキスト メニューを表示します。
入力引数
parent
— 親オブジェクト
Tree
オブジェクト | TreeNode
オブジェクト
親オブジェクト。Tree
または TreeNode
オブジェクトとして指定します。
sibling
— 兄弟ノード
TreeNode
兄弟ノード。TreeNode
オブジェクトとして指定します。
location
— 兄弟を基準とする相対位置
"after"
(既定値) | "before"
兄弟を基準とするノードの相対位置。"after"
または "before"
として指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
例: node = uitreenode(t,Text="Measurements")
は、"Measurements"
というラベルをもつツリー ノードを作成します。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: node = uitreenode(t,"Text","Measurements")
は、"Measurements"
というラベルをもつツリー ノードを作成します。
メモ
以下にリストするプロパティは、利用できるプロパティの一部です。完全な一覧については、TreeNode のプロパティ を参照してください。
Text
— ノード テキスト
'Tree Node'
(既定値) | 文字ベクトル | string スカラー
ノード テキスト。文字ベクトルまたは string スカラーとして指定します。
Icon
— アイコンのソースまたはファイル
''
(既定値) | 文字ベクトル | string スカラー | m
×n
×3 のトゥルーカラー イメージ配列
アイコンのソースまたはファイル。文字ベクトル、string スカラー、または m
×n
×3 のトゥルーカラー イメージ配列として指定します。ファイル名には、MATLAB パス上のイメージ ファイル名、あるいはイメージ ファイルへの絶対パスを指定できます。他のユーザーとアプリを共有する予定の場合は、アプリのパッケージ化を容易にするためにイメージ ファイルを MATLAB パス上に配置します。
サポートされているイメージ形式には、JPEG、PNG、GIF、SVG または m
×n
×3 のトゥルーカラー イメージ配列が含まれます。トゥルーカラー イメージ配列の詳細については、イメージの種類を参照してください。
例: 'icon.png'
は、MATLAB パス上のアイコン ファイルを指定します。
例: 'C:\Documents\icon.png'
は、イメージ ファイルへの絶対パスを指定します。
NodeData
— ノードのデータ
[]
(既定値) | 配列
ノードのデータ。任意の型の配列として指定します。ノードに関連するデータをアプリ コード内で共有するには、NodeData
を指定します。
バージョン履歴
R2017b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)