[英]JAVA - How to access objects of ArrayList from JTree
我在單擊相應節點時訪問ArrayList的元素時遇到問題。 這是我第一次使用此工具,我搜索了許多不同的教程,但無法解決我的問題。 這是我到目前為止的內容:
class Animal
:只是具有不同參數,setter和getter的構造函數。 class MainClass
:動物的ArrayList。 Main在這里運行。 class Menu
:使用NetBeans設計的JFrame。 要獲取ArrayList的元素,請使用以下代碼:
public void refreshTree(){ root = new DefaultMutableTreeNode("Animals"); children1 = new DefaultMutableTreeNode("Carnivores"); root.add(children1); mainTree = new JTree(root); List<Animal> animals = mainClass.returnList(); for(Animal animal: animals){ DefaultMutableTreeNode node = new DefaultMutableTreeNode(animal); children1.add(node); } jScrollPane2.setViewportView(mainTree); }
每次我從ArrayList中添加或刪除元素時,我都會使用refreshTree()
方法來獲取ArrayList的更新版本。
在我的Menu類中,對於動物的不同屬性,我還具有不同的JTextPanel。
我需要做的事情(我不會復制我現在擁有的代碼,因為我認為沒有意義)是能夠單擊一個節點,因此將動物的不同屬性加載到JTextPanel中,所以如果我修改值,它們也會在對象中更改。
我知道我應該使用類似:
int value = textPanel.getText();
然后使用我的動物課程的二傳手。
我的問題是,僅單擊JTree,如何訪問該特定動物?
您可以像下面這樣。 希望它能幫助您進步。
JTree tree = new JTree();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Animals");
DefaultTreeModel model = new DefaultTreeModel(root);
tree.setModel(model);
root.add(new DefaultMutableTreeNode(new Animal("Dog","ACS")));
root.add(new DefaultMutableTreeNode(new Animal("Cat","BCS")));
root.add(new DefaultMutableTreeNode(new Animal("Lion","FCS")));
DefaultTreeSelectionModel sModel = new DefaultTreeSelectionModel();
sModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setSelectionModel(sModel);
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent selection) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)selection.getPath().getLastPathComponent();
if(selectedNode.isLeaf()) {
Animal animal = (Animal)selectedNode.getUserObject();
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.