【发布时间】:2011-12-14 16:00:06
【问题描述】:
我设计了如下树形结构:
function tree
import javax.swing.*
import javax.swing.tree.*;
[I,map] = checkedIcon;
javaImage_checked = im2java(I,map);
[I,map] = uncheckedIcon;
javaImage_unchecked = im2java(I,map);
% javaImage_checked/unchecked are assumed to have the same width
iconWidth = javaImage_unchecked.getWidth;
% create top node
root = uitreenode('v0','root', 'Results',[], 0);
% create children with checkboxes
Node1 = uitreenode('v0','Node1', 'Position', [], false);
root.add(Node1);
Node11 = uitreenode('v0','Node11', 'Cartesians Coordinates', [], true);
Node11.setIcon(javaImage_checked);
Node1.add(Node11);
Node12 = uitreenode('v0','Node12', 'Spherical Coordinates', [], true);
Node12.setIcon(javaImage_unchecked);
Node1.add(Node12);
Node2 = uitreenode('v0','Node2', 'Velocity', [], false);
root.add(Node2);
Node3 = uitreenode('v0','Node3', 'Acceleration', [], false);
root.add(Node3);
% set treeModel
treeModel = DefaultTreeModel(root);
% create the tree
[tree, container]= uitree('v0');
tree.setModel(treeModel);
% make root the initially selected node
tree.setSelectedNode(Node11);
function [I,map] = checkedIcon()
I = uint8(...
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0;
2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,1;
2,2,2,2,2,2,2,2,2,2,2,2,0,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,0,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,0,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,0,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,0,0,1,1,2,2,3,1;
2,2,1,0,0,1,1,0,0,1,1,1,2,2,3,1;
2,2,1,1,0,0,0,0,1,1,1,1,2,2,3,1;
2,2,1,1,0,0,0,0,1,1,1,1,2,2,3,1;
2,2,1,1,1,0,0,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,0,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1;
2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1;
1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1]);
map = [0.023529,0.4902,0;
1,1,1;
0,0,0;
0.50196,0.50196,0.50196;
0.50196,0.50196,0.50196;
0,0,0;
0,0,0;
0,0,0];
end
function [I,map] = uncheckedIcon()
I = uint8(...
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;
2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1;
2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,1,1,1,1,1,1,1,1,1,1,2,2,3,1;
2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1;
2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1;
1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1]);
map = ...
[0.023529,0.4902,0;
1,1,1;
0,0,0;
0.50196,0.50196,0.50196;
0.50196,0.50196,0.50196;
0,0,0;
0,0,0;
0,0,0];
end
end
我希望能够显示一个附加图标(在选中/未选中图标的右侧和节点名称的左侧)。我想到的一个解决方案是用 jLabel 组件替换节点的名称。
icon2 = javax.swing.ImageIcon('image.jpg');
jLabel = javax.swing.JLabel('Cartesian Coordinates');
jLabel.setIcon(icon2);
Node11.setName(jLabel);
但是,上面的代码不起作用。我还尝试将 jLabel 组件添加到树节点但没有成功。我什至尝试修改 DefaultCheckBoxNode 的属性“setIcon”,但该组件没有该属性。所以,我问自己是否有解决我的问题的方法。
【问题讨论】:
标签: swing matlab icons jtree nodes