まず、私は netbeans を使用しており、Java GUI ゲーム全体に慣れていないと言わなければなりません。
したがって、私の問題は、自分のプロジェクトに固有の独自のツリー構造を作成したことであり、自分の構造を使用して JTree を構築したいと考えています。
私は Jtree のトピックについて読んでいましたが、理解していることから、TreeModel インターフェイスを構造に実装する必要があります。私が読んだもう1つの方法は、 DefaultMutableTreeNode を使用することでしたが、それを使用した明確な例が見つかりません。
現在、ツリー構造全体を構築してデータで埋めており、再構築を避けようとしています。ツリーを Jtree に実装するにはどうすればよいですか?
package models;
import java.util.ArrayList;
import java.util.List;
public class IngredientTree {
private Node root;
public IngredientTree(){
root = new Node();
}
public IngredientTree(Node rootData) {
root = rootData;
}
public void setRoot(Node n){
root = n;
}
public Node getRoot(){
return root;
}
public void addToTree(Ingredient i){
if(root.getData().getName()=="") // Then it must be the root
root.setData(i);
else
addToTree(root,i);
}
private void addToTree(Node n, Ingredient i){
if(isFirstAdd(n)) //Has no parent and no children
n.addChild(new Node(i,n));
else if(n.hasChildren()){ //Has parent and children
if(!inChildren(n,i)){
if(inNode(n,i))
n.addChild(new Node(i,n));
}
else{
for(Node child : n.getChildren()){
addToTree(child,i);
}
}
}
else{ //Has parent but no children
n.addChild(new Node(i,n));
}
}
private boolean isFirstAdd(Node n){
return(!n.hasParent() && !n.hasChildren());
}
private boolean inChildren(Node n,Ingredient i){
for(Node child : n.getChildren()){
if(inNode(child,i))
return true;
}
return false;
}
private boolean inNode(Node n,Ingredient i){
return(i.getStartIndex() > n.getData().getStartIndex() &&
i.getEndIndex() < n.getData().getEndIndex());
}
public int countIngredients(){
return countIngredients(this.getRoot());
}
private int countIngredients(Node r){
int count = 0;
if(!r.hasChildren()){
return 1;
}else{
for(Node child: r.getChildren()){
count += countIngredients(child);
}
}
return count;
}
}