JTree, много записей - PullRequest
       9

JTree, много записей

1 голос
/ 01 января 2012

Так что я привык создавать JTree, добавляя DefaultMutableTreeNode к своей модели, но сейчас у меня есть много записей, которые относятся к 1 JTree, есть более короткий способ сделать это, например, вы делаете JList, где вы можете просто указать String table[] = {};

"<html> <b>Shield Hardners</b> </html>", 
"    Ballistic Deflection Array",
"    Explosion Dampening Array",
"    Heat Dissipation Array",
"    Photon Scattering Array",
"<html> <b>Hangar Arrays</b> </html>",
"    Corporate Hangar Array",
"<html> <b>Ship Maintnance Bays</b> </html>",
"    Capital Ship Maintenance Array",
"    Ship Maintenance Array",
"<html> <b>Silos</b> </html>",
"    Biochemical Silo",
"    Catalyst Silo",
"    Coupling Array",
"    General Storage", 
"    Hazardous Chemical Silo", 
"    Silo", 
"<html> <b>Assembly Arrays</b> </html>",
"    Advanced Large Ship Assembly Array",
"    Advanced Medium Ship Assembly Array",
"    Advanced Small Ship Assembly Array",
"    Ammunition Assembly Array",
"    Capital Ship Assembly Array",
"    Component Assembly Array",
"    Drone Assembly Array",
"    Efficient Equipment Assembly Array",
"    Large Ship Assembly Array",
"    Medium Ship Assembly Array",
"    Rapid Equipment Assembly Array",
"    Small Ship Assembly Array",
"<html> <b>Mobile Laboratory</b> </html>",
"    Advanced Mobile Laboratory",
"    Drug Lab",
"    Mobile Laboratory",
"<html> <b>Moon Harvester</b> </html>", 
"    Moon Harvesting Array",
"    Moon Harvesting Array II",
"<html> <b>Reactor Arrays</b> </html>", 
"    Biochemical Reactor Array",
"    Complex Reactor Array", 
"    Medium Biochemical Reactor Array",
"    Simple Reactor Array",
"<html> <b>Refining Arrays</b> </html>", 
"    Intensive Refining Array",
"    Medium Intensive Refining Array", 
"    Refining Array",
"<html> <b>Sov Modules</b> </html>", 
"    Cynosural Generator Array",
"    Cynosural System Jammer", 
"    Jump Bridge", 
"    System Scanning Array",
"<html> <b>Electronic Warfare</b> </html>", 
"    Dread Guristas Ion Field Projection Battery",
"    Guristas Ion Field Projection Battery",
"    Ion Field Projection Battery",
"    Dread Guristas Phase Inversion Battery",
"    Guristas Phase Inversion Battery",
"    Phase Inversion Battery",
"    Dread Guristas Spatial Destabilization Battery",
"    Guristas Spatial Destabilization Battery",
"    Spatial Destabilization Battery",
"    Dread Guristas White Noise Generation Battery",
"    Guristas White Noise Generation Battery",
"    White Noise Generation Battery",
"    Sensor Dampening Battery",
"    Serpentis Sensor Dampening Battery",
"    Shadow Serpentis Sensor Dampening Battery",
"    Stealth Emitter Array",
"    Serpentis Warp Disruption Battery",
"    Shadow Warp Disruption Battery",
"    Warp Disruption Battery",
"    Serpentis Warp Scrambling Battery",
"    Shadow Warp Scrambling Battery",
"    Warp Scrambling Battery",
"    Angel Stasis Webification Battery",
"    Domination Stasis Webification Battery",
"    Stasis Webification Battery",
"<html> <b>Energy Neutralizers</b> </html>",
"    Blood Energy Neutralizing Battery",
"    Dark Blood Energy Neutralizing Battery",
"    Energy Neutralizing Battery",
"    Sansha Energy Neutralizing Battery",
"    True Sansha Energy Neutralizing Battery",
"<html> <b>Hybrid Battery</b> </html>",
"    Large Blaster Battery",
"    Serpentis Large Blaster Battery",
"    Shadow Large Blaster Battery",
"    Medium Blaster Battery",
"    Serpentis Medium Blaster Battery",
"    Shadow Medium Blaster Battery",
"    Small Blaster Battery",
"    Serpentis Small Blaster Battery",
"    Shadow Small Blaster Battery",
"    Large Railgun Battery",
"    Serpentis Large Railgun Battery",
"    Shadow Large Railgun Battery",
"    Medium Railgun Battery",
"    Serpentis Medium Railgun Battery",
"    Shadow Medium Railgun Battery",
"    Small Railgun Battery",
"    Serpentis Small Railgun Battery",
"    Shadow Small Railgun Battery",
"<html> <b>Laser Battery</b> </html>",
"    Large Pulse Laser Battery",
"    Blood Large Pulse Laser Battery",
"    Dark Blood Large Pulse Laser Battery",
"    Sansha Large Pulse Laser Battery",
"    True Sansha Large Pulse Laser Battery",
"    Medium Pulse Laser Battery",
"    Blood Medium Pulse Laser Battery",
"    Dark Blood Medium Pulse Laser Battery",
"    Sansha Medium Pulse Laser Battery",
"    True Sansha Blood Medium Pulse Laser Battery",
"    Small Pulse Laser Battery",
"    Blood Small Pulse Laser Battery",
"    Dark Blood Small Pulse Laser Battery",
"    Sansha Small Pulse Laser Battery",
"    True Sansha Blood Small Pulse Laser Battery",
"    Large Beam Laser Battery",
"    Blood Large Beam Laser Battery",
"    Dark Blood Large Beam Laser Battery",
"    Sansha Large Beam Laser Battery",
"    True Sansha Blood Large Beam Laser Battery",
"    Medium Beam Laser Battery",
"    Blood Medium Beam Laser Battery",
"    Dark Blood Medium Beam Laser Battery",
"    Sansha Medium Beam Laser Battery",
"    True Sansha Blood Medium Beam Laser Battery",
"    Small Beam Laser Battery",
"    Blood Small Beam Laser Battery",
"    Dark Blood Small Beam Laser Battery",
"    Sansha Small Beam Laser Battery",
"    True Sansha Blood Small Beam Laser Battery",
"<html> <b>Missile Battery</b> </html>",
"    Cruise Missile Battery",
"    Dread Guristas Cruise Missile Battery",
"    Guristas Cruise Missile Battery",
"    Torpedo Battery",
"    Dread Guristas Torpedo Battery",
"    Guristas Torpedo Battery",
"    Citadel Torpedo Battery",
"    Dread Guristas Citadel Torpedo Battery",
"    Guristas Citadel Torpedo Battery",
"<html> <b>Projectile Battery</b> </html>",
"    Large AutoCannon Battery",
"    Angel Large AutoCannon Battery",
"    Domination Large AutoCannon Battery",
"    Medium AutoCannon Battery",
"    Angel Medium AutoCannon Battery",
"    Domination Medium AutoCannon Battery",
"    Small AutoCannon Battery",
"    Angel Small AutoCannon Battery",
"    Domination Small AutoCannon Battery",
"    Large Artillery Battery",
"    Angel Large Artillery Battery",
"    Domination Large Artillery Battery",
"    Medium Artillery Battery",
"    Angel Medium Artillery Battery",
"    Domination Medium Artillery Battery",
"    Small Artillery Battery",
"    Angel Small Artillery Battery",
"    Domination Small Artillery Battery"

Так что это прямо из моего старого JList. JTree должно выглядеть так: Строка, содержащая тег "html", должна быть узлом PARENT, а один отступ должен быть CHILD

Так должно выглядеть так:

  • Щит трудолюбивых <Родитель </li>
  • >>> Баллистическая отклоняющая матрица
  • >>> Матрица демпфирования взрыва

Я попытался поместить это в файл, проанализировать его и распечатать узлы следующим образом:

public class Env {
    public static void main(String[] args)
    {           
        try {
            Scanner input   = new Scanner(new File("data.txt"));
            String line;
            String sub;
            while(input.hasNextLine())
            {
                line = input.nextLine();

                String subline = line.replace('"', ' ').substring(11).replace("</b> </html> ,", " ").trim().replace(" ", "_");
                if(line.contains("<html>")){
                    System.out.println("DefaultMutableTreeNode " + subline + " = new DefaultMutableTreeNode(" + line.replace(",", " ").trim() + ");");
                } 
            }

        } catch (Exception e) {}
    }
}

Прежде чем я закончу писать этот код, есть более простой способ сделать это.

Ответы [ 2 ]

2 голосов
/ 01 января 2012

Я могу думать только об использовании регулярных выражений для «упрощения» замены String, но даже это вопрос мнения.

import java.util.Scanner;

public class TestFoo {
   private static final String FILE_NAME = "data.txt";
   private static final String REGEX = "</?html>|</?b>|\"|,";

   public static void main(String[] args) {
      Scanner scan = new Scanner(new File(FILE_NAME));
      while (scan.hasNextLine()) {
         String line = scan.nextLine();
         String newLine = line.replaceAll(REGEX, "").trim();
         if (line.contains("html")) {
            System.out.println("Default Mut: " + newLine);
         } else {
            System.out.println("\t" + newLine);
         }
      }
   }
}

Конечно, вам понадобится попробовать / поймать, и не стоит игнорировать блок catch. Это также удалит запятые внутри кавычек и поэтому не является идеальным. Для загрузки доступны онлайн-библиотеки Java, которые позволяют очень аккуратно разбирать файлы, разделенные запятыми.

0 голосов
/ 01 января 2012

НЕТ КОРОТКОГО ПУТИ Проблема решена путем анализа данных, как показано ниже, путем добавления else для дочерних узлов.

...