1

エディタ アプリケーションを作成していますが、メニューに問題があります。オブジェクト メニューで、 を使用して複数のオブジェクト タイプを表示したいと考えていますJTree。これらのオブジェクト タイプは、プラグインによって動的に登録され、次のスタイルに従います。

trigger.button
trigger.lever
out.door.fallgate
trigger.plate
out.door.door
...

この名前のリストはソートされておらず、次のようなTreeNode構造を構築したいと考えています。JTree

  • 引き金
    • ボタン
    • レバー
  • アウト
    • ドア
      • フォールゲート
      • ドア

さらに、ユーザーがリーフ ノードを選択した場合は、オブジェクト名 (trigger.button など) をTreePath. 誰かがこれを行う方法を教えてください。

4

2 に答える 2

2

疑似コードでは、これがあなたがする必要があることです...

public TreeNode buildTree(){
    String[] names = new String[]; // fill this with the names of your plugins

    TreeNode tree;

    // for each plugin name...
    for (int i=0;i<names.length;i++){
        String currentName = names[i];
        String[] splitName = currentName.split(".");

        // loop over the split name and see if the nodes exist in the tree. If not, create them
        TreeNode parent = tree;
        for (int n=0;n<splitName.length;n++){
            if (parent.hasChild(splitName[n])){
                // the parent node exists, so it doesn't need to be created. Store the node as 'parent' to use in the next loop run
                parent = parent.getChild(splitName[n]);
            }
            else {
                // the node doesn't exist, so create it. Then set it as 'parent' for use by the next loop run
                TreeNode child = new TreeNode(splitName[n]);
                parent.addChild(child);
                parent = child;
            }
        }

return tree;
}

これは疑似コードにすぎません - TreeNode メソッドを適切に実装する作業などを行う必要があります。自分で試してみてください。さらに問題がある場合は、質問を作成して、自分でやろうとしたことを示してください。 、その後、私たちはあなたが小さな問題を解決するのをより喜んでお手伝いします.

于 2012-10-31T08:51:21.223 に答える
1
于 2012-10-31T08:49:27.540 に答える