[英]JTree coloring selected node
我看到了很多关于JTree
着色问题的帖子和问题。 但我没有为我的具体问题找到任何解决方案。
我想选择一个节点并在单击我自制的激活按钮的情况下突出显示它,并通过单击停用按钮撤消突出显示。
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Motor testing");
root.add(new DefaultMutableTreeNode("Option 1000 RPM"));
root.add(new DefaultMutableTreeNode("Option 2000 RPM"));
//--------------- activate button
JButton btnNewButton = new JButton("Activate");
btnNewButton.addActionListener(new ActionListener() {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
//.... essential rest
}
我尝试了很多东西,比如修改DefaultTreeCellRenderer
。 但我无法解决问题。
编辑:
我尝试了以下几行:
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
((MyTreeCellRenderer) tree.getCellRenderer()).activateLeaf = true;
}
}
和:
public class MyTreeCellRenderer extends DefaultTreeCellRenderer {
public boolean activateLeaf = false;
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean exp, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel, exp, leaf, row, hasFocus);
if(activateLeaf)
setForeground(Color.GREEN);
return this;
}
但是如果我在按下激活按钮后更改选择,节点只会变成绿色。 如果我在设置后立即重置标志,则不会发生任何事情。 我想要一个能够修改特定节点并且能够通过每个父节点运行 recursivley 的解决方案。
我还希望能够更改多个选择,而不仅仅是一个。
向按钮的 actionListener 添加一个tree.repaint()
调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.