簡體   English   中英

JAVA-如何從JTree訪問ArrayList的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM