2014-10-27 61 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

相关问题