我知道JTree的模型可以使用這種形式的屬性部分進行設置:如何使用基於縮進的文本設置JTree模型?
它發生在左側區域中的文本,並根據壓痕,它創建的節點。
我的問題是:如果我有一個像左邊那個縮進文本(比如文件中),我想從代碼中將它作爲參數傳遞給模型,我該怎麼做?我想我可以手動解析它,但是我發現它可以從圖形窗體中實現,所以必須有一個我可以調用的方法,對吧?
我知道JTree的模型可以使用這種形式的屬性部分進行設置:如何使用基於縮進的文本設置JTree模型?
它發生在左側區域中的文本,並根據壓痕,它創建的節點。
我的問題是:如果我有一個像左邊那個縮進文本(比如文件中),我想從代碼中將它作爲參數傳遞給模型,我該怎麼做?我想我可以手動解析它,但是我發現它可以從圖形窗體中實現,所以必須有一個我可以調用的方法,對吧?
嘗試
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));
這和這個問題有什麼關係:如何將文件解析成一個'TreeModel',其中樹結構是基於文件中的縮進。因爲這就是這個問題的原因 – Robin 2014-10-27 21:43:25
你應該是(a)實施您自己的TreeModel(請參閱oracle tutorial on trees)或(b)獲取IDE的源代碼並從中剪下合適的類。
'但是我發現它可以從圖形窗體中完成,所以必須有一個已經實現的方法可以調用,對嗎?'這個圖形窗體是IDE依賴的。你不應該編寫依賴於IDE的代碼。當您更改使用不同的IDE時會發生什麼?自己解析代碼是可以在任何地方使用的最簡單和最便攜的解決方案。 – camickr 2014-10-27 20:28:34
@camicr我認爲圖形窗體只是調用一些不依賴於IDE的引擎蓋下的swing方法。所以沒有任何擺動方法需要這種輸入並將其轉換爲節點呢? – kace91 2014-10-27 20:44:09
不,在擺動沒有這樣的事情,但它不應該很難解析縮進文本到樹結構,例如看到這個:http://stackoverflow.com/questions/21735468/parse-indented-text-tree -in-java – lbalazscs 2014-10-27 20:48:49