5

JTree2 つのパネルのうち 2 つがありJFrameます。ノードのスタイル (色とフォント) をあるツリーから別のツリーにドラッグ アンド ドロップして変更したいのですが、JTreeノードの色を永続的に変更する方法を教えてください。

ここに画像の説明を入力

4

2 に答える 2

12

まず、スタイルと色を処理できるデータオブジェクトが必要です。DefaultMutableTreeNodeをサブクラス化し、これらのデータ項目をgettsとsetterで追加できます。

次に、カスタムTreeCellRendererを作成する必要があります。DefaultTreeCellRendererを拡張し、オーバーライドされたハンドラーでカスタムクラスを確認し、これらの値が設定されている場合はフォントと色を使用するようにJLabel出力を変更することをお勧めします。

于 2012-04-11T18:37:44.727 に答える
9

独自の を作成しますCellRenderer。に適切な動作を与えるには、メソッドMyTreeCellRendererを拡張DefaultTreeCellRendererしてオーバーライドする必要がありますgetTreeCellRendererComponent

public class MyTreeCellRenderer extends DefaultTreeCellRenderer {

    @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);

        // Assuming you have a tree of Strings
        String node = (String) ((DefaultMutableTreeNode) value).getUserObject();

        // If the node is a leaf and ends with "xxx"
        if (leaf && node.endsWith("xxx")) {
            // Paint the node in blue
            setForeground(new Color(13, 57 ,115));
        }

        return this;
    }
}

最後に、あなたのツリーが と呼ばれているとしmyTreeましょCellRendererう。

myTree.setCellRenderer(new MyTreeCellRenderer());
于 2014-12-17T10:17:28.197 に答える