1
以下のメソッドは、A Stringからカスタムデータツリーを作成します。カスタムツリーからJPopupMenuを作成する方法
私は多くのサブメニューを持つポップアップメニューを生成するメソッドに取り組んでいます。基本的にこれらのメニューは動的に与えられているので、下の文字列を使ってサブメニューを作成するアルゴリズムを持っています。それを行うために、私は区切り文字を使って分割することで、この文字列をJavaカスタムツリーに変換します。
public class MenuItem {
public String Name;
public Vector<MenuItem> Childeren;
public MenuItem() {
Name = "";
Childeren = new Vector<MenuItem>();
}
public MenuItem(String name) {
this();
Name = name;
}
public String toString() {
return Name + " " + Childeren ;
}
}
public static int createNode(StringTokenizer p_jTokenizer, MenuItem p_iParent) {
int nCount = 0;
while(p_jTokenizer.hasMoreTokens()) {
String strToken = p_jTokenizer.nextToken();
MenuItem iItem = new MenuItem();
if(strToken.endsWith("[")) {
strToken = strToken.substring(0, strToken.length() - 1);
nCount = createNode(p_jTokenizer, iItem);
}
while(strToken.endsWith("]")) {
nCount++;
strToken = strToken.substring(0, strToken.length() - 1);
}
iItem.Name = strToken;
p_iParent.Childeren.add(iItem);
while(nCount > 0) {
return --nCount;
}
}
return nCount;
}
アン例Iが解析動的ストリング値:
文字列str = "メニュー1、メニュー2 [; Menu2A; Menu2B [; Menu2B-A; Menu2B-B]]; MENU3;";
現在の方法では、ツリー構造以下のように作成されます。
Pop-up Menu
/ | \
Menu1 Menu2 Menu3
/ |
Menu2A Menu2B
| \
| \
Menu2B-A Menu2B-B
私はこの木に基づいてサブメニューでのPopupMenuを作成する方法に引っかかっています。私は再帰的な方法を使用すると思うが、どちらの方法に行くのか分からない。
マルチレベルのメニューがポップアップから出てきます。作成時に「使用できないGUI」のように聞こえます。 –