2012-01-01 31 views
1

所以我習慣建立一個JTree加入DefaultMutableTreeNode的模型,但現在我有很多條目屬於1 JTree有沒有更簡單的方法來做到這一點可能像你做一個絲毫JList在那裏你可以指定一個String table[] = {};JTree,很多條目

"<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應該是這樣的:

  • 盾Hardners <父
  • :包含「HTML」標籤應該是一個父節點和一個白衣縮進應是輕而易舉的

    因此,它應該是這樣的 線

  • >>>彈道偏轉陣列<兒童
  • >>>爆炸潤版陣列<兒童

我已經在一個文件puting這一點,並分析它,並打印出像這樣的節點嘗試:

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) {} 
    } 
} 

之前,我寫完代碼有沒有做這個簡單的方法。

+0

爲什麼不把它打成HTML,然後讓自己的魔法/轉換到正確的數據結構。 – 2012-01-01 19:23:28

+0

@OmarIthawi:因爲它看起來不是一個有效的HTML文件,而是在某些行上帶有一些HTML標記的逗號分隔文件。 – 2012-01-01 19:25:02

+0

當您想要在JList中使用數組時,您仍然必須創建一個循環來將條目添加到數組中。所以在這裏你的代碼有一個循環,直接將條目添加到TreeModel。你爲什麼認爲會有一個更簡單的方法?直接將數據添加到模型會更有效率(更短?),因爲您不需要使用數組的額外開銷。但要回答你的問題,沒有接受數組的構造函數。 – camickr 2012-01-01 19:28:18

回答

2

我只能想到使用正則表達式來「簡化」字符串替換,但即使這是一個意見的問題。

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); 
     } 
     } 
    } 
} 

你當然需要try/catch,並且不應該忽略catch塊。這也將刪除引號內的逗號,因此不理想。在線提供了可供下載的Java庫,可以非常乾淨地分析逗號分隔的文件。

0

沒有簡短的方式 問題通過解析數據解決,如下圖所示,通過爲子節點添加else來解決。