2014-10-27 58 views
1

我知道JTree的模型可以使用這種形式的屬性部分進行設置:如何使用基於縮進的文本設置JTree模型?

http://i.imgur.com/jqE4i6x.png

它發生在左側區域中的文本,並根據壓痕,它創建的節點。

我的問題是:如果我有一個像左邊那個縮進文本(比如文件中),我想從代碼中將它作爲參數傳遞給模型,我該怎麼做?我想我可以手動解析它,但是我發現它可以從圖形窗體中實現,所以必須有一個我可以調用的方法,對吧?

+1

'但是我發現它可以從圖形窗體中完成,所以必須有一個已經實現的方法可以調用,對嗎?'這個圖形窗體是IDE依賴的。你不應該編寫依賴於IDE的代碼。當您更改使用不同的IDE時會發生什麼?自己解析代碼是可以在任何地方使用的最簡單和最便攜的解決方案。 – camickr 2014-10-27 20:28:34

+0

@camicr我認爲圖形窗體只是調用一些不依賴於IDE的引擎蓋下的swing方法。所以沒有任何擺動方法需要這種輸入並將其轉換爲節點呢? – kace91 2014-10-27 20:44:09

+0

不,在擺動沒有這樣的事情,但它不應該很難解析縮進文本到樹結構,例如看到這個:http://stackoverflow.com/questions/21735468/parse-indented-text-tree -in-java – lbalazscs 2014-10-27 20:48:49

回答

0

嘗試

BasicTreeUI basicTreeUI = (BasicTreeUI) myJTree.getUI(); 
basicTreeUI.setRightChildIndent(10); 

如果不工作,我平時做這樣的(但是這取決於你要的樣子)

// retrieve the HashMap of Default properties. 
UIDefaults uiDefs = UIManager.getDefaults(); 
// now replace the one we want to change. 
uiDefs.put("Tree.leftChildIndent" , new Integer(x)); 
+0

這和這個問題有什麼關係:如何將文件解析成一個'TreeModel',其中樹結構是基於文件中的縮進。因爲這就是這個問題的原因 – Robin 2014-10-27 21:43:25

0

你應該是(a)實施您自己的TreeModel(請參閱oracle tutorial on trees)或(b)獲取IDE的源代碼並從中剪下合適的類。

+0

因此,將模型設置爲縮進文本的可能性是由IDE給出的,而不是由swing本身給出的? – kace91 2014-10-27 20:41:12

+0

是的,你是對的。 – ursa 2014-10-27 23:31:11