我使用RTLD_LOCAL
实现了A.so
。我在树中存储消息类型对象,我最初根据消息的libstdc++.so.6
变量值设置节点图标。我可以使用以下代码成功完成此操作。
libstdc++.so.6
动态地我想让用户选择节点并改变其方向,以便更改节点图标。我是通过以下代码来完成的。
JTree
这是我的DefaultTreeModel
课程。
direction
一旦我通过选择节点改变方向,图标就会改变。但是每当我点击其他节点或我的JFrame中的某个地方时,图标就会一直在改变方向。我调试并确保在单击节点并说要更改方向时仅调用 tcBuilderTree = new JTree(treeModel);
tcBuilderTree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
tcBuilderTree.setCellRenderer(new DefaultTreeCellRenderer(){
public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean isLeaf,
int row,
boolean focused) {
Component c = super.getTreeCellRendererComponent(tree, value,
selected, expanded, isLeaf, row, focused);
if(value instanceof CustomMessageTreeNode){
setIcon(((CustomMessageTreeNode)value).
getMessage().getMessageDirectionIcon());
}
return c;
}
});
//implementation of getMessageDirectionIcon()
public ImageIcon getMessageDirectionIcon(){
ImageIcon icon=null;
URL messageIconUrl;
if(msgDirection.equalsIgnoreCase("In")){
messageIconUrl = ToolBar.class.getResource
("/icons/arrowRight.png");
icon=new ImageIcon(messageIconUrl);
}
else if(msgDirection.equalsIgnoreCase("Out")){
messageIconUrl = ToolBar.class.getResource
("/icons/arrowLeft.png");
icon=new ImageIcon(messageIconUrl);
}
return icon;
}
函数一次。
请让我知道为什么会发生这种情况,并且有更好的方法来执行此操作。当用户更改一次时,节点图标会继续更改的原因是什么。