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