Помещение файла свойств в JTree, а не просто его отображение

Это мой текущий код - он просто отображает значения пары ключей из моего файла GitCommands.properties и отображает их в моем файле GetAllProperties.java - можно ли отсортировать его, чтобы он попадал в JTree, а не просто отображал его в списке формат типа?

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class GetAllProperties {
    private static JTree tree;

    public static void main(String[] args) {

        Properties properties = new Properties();
        try {
            String filename = "GitCommands.properties";
            // File file = new
            // File("/ApplicationTest/.settings/GitCommands.properties");
            FileInputStream fileInputStream = new FileInputStream(filename);

            // load properties file
            properties.load(fileInputStream);

            System.out.println("keys avialble in Properties Files are:");
            System.out.println(properties.keySet());

            System.out.println("Key Value Pairs :");
            Enumeration enumeration = properties.keys();
            while (enumeration.hasMoreElements()) {
                String key = (String) enumeration.nextElement();
                System.out.println(key + ": " + properties.get(key));
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}

person user3373261    schedule 20.08.2014    source источник
comment
Я не уверен, что дерево имеет смысл, но да, это возможно. Ознакомьтесь с Как использовать деревья. JTable может иметь больше смысла, см. Как использовать таблицы   -  person MadProgrammer    schedule 20.08.2014
comment
Это может показаться немного странным, но мне не разрешено использовать таблицу, она должна быть деревом :( Не могли бы вы указать мне правильное направление, пожалуйста? Я просмотрел множество примеров, но не нашел ни одного, который еще помещает файл свойств в JTree, спасибо за ваш ответ!   -  person user3373261    schedule 20.08.2014
comment
Ну вот и вопрос, что такое узел и что такое лист?   -  person MadProgrammer    schedule 20.08.2014
comment
Я хочу иметь корневой файл с именем команды GIT, и при нажатии на него он открывается, чтобы отображать все ключи команд GIT в качестве узлов. После того, как каждый отдельный узел щелкнут, я хочу, чтобы он отображал строку описания из того же файла свойств на панели справа.   -  person user3373261    schedule 20.08.2014


Ответы (1)


вы можете просто заполнить дерево, используя модель дерева

DefaultMutableTreeNode root = new DefaultMutableTreeNode(filename);
DefaultTreeModel treeModel = new DefaultTreeModel(root);

Enumeration enumeration = properties.keys();  
while (enumeration.hasMoreElements()) {  
    String key = (String) enumeration.nextElement();
    String nodeObj = key+" : "+properties.get(key);
    treeModel.insertNodeInto(new DefaultMutableTreeNode(nodeObj), root, 0);
}

JTree tree = new JTree(treeModel);

ПРИМЕЧАНИЕ: элементы не сортируются... для этого вам нужно поместить все ключи в список и отсортировать этот список

List sortedList<String> = new ArrayList<String>();
Enumeration enumeration = properties.keys();  
while (enumeration.hasMoreElements()) {  
    String key = (String) enumeration.nextElement();
    sortedList.add(key);
}
Collection.sort(sortedList);

for(String key: sortedList){
    String nodeObj = key+" : "+properties.get(key);
    // [...] same as above
}
person Martin Frank    schedule 20.08.2014
comment
ах спасибо! Я уже заполнил jtree, но не для того, чтобы мне было интересно, как это сделать, спасибо за помощь! ^.^ - person user3373261; 20.08.2014
comment
Спасибо! Наконец-то это начинает обретать смысл, ха-ха :) - person user3373261; 20.08.2014
comment
Я получаю сообщение об ошибке в коде: { ожидается после Enumeration enumeration = properties.keys(); в первом разделе кода, если я поставлю { в него, то подчеркнет коллекцию Collection.sort(sortedList); и sortedList for(String key: sortedList){ .... у вас есть идеи, как это исправить? :) - person user3373261; 20.08.2014
comment
это должны быть коллекции, использующие этот java.util.Collections; я пропустил 's', извините - person Martin Frank; 20.08.2014
comment
Ах, я не могу поверить, что я сам этого не осознавал, вот что это было, ха-ха, спасибо! - person user3373261; 20.08.2014
comment
я не возражал ^^ извините, я написал этот код прямо в tackOverflow, я не копировал/вставлял из Eclipse... надеюсь, в нем больше нет опечаток! - person Martin Frank; 20.08.2014
comment
Теперь все в порядке, он просто все еще говорит, что { ожидается после Enumeration enumeration = properties.keys(); К сожалению! - person user3373261; 20.08.2014
comment
похоже, что отсутствует скобка '{', это может быть скобка в любой части вашего кода - проверьте, все ли скобки открыты/закрыты правильно... - person Martin Frank; 20.08.2014
comment
Он говорил мне добавить еще один в тело закрытого класса, поэтому я сделал это, так что теперь у меня слишком много скобок, но если я удалю его, я верну ошибку, я думаю, что я пропустил один из где-то, но я просто не не знаю куда положить :( - person user3373261; 20.08.2014