在Swing GUI中选择嵌套的子表达式

时间:2012-01-20 13:51:09

标签: java swing user-interface

作为我在Java swing中实现的GUI设计的一部分,我需要用户能够选择树的部分或子部分,就像表示为字符串的结构一样。

例如,如果我要显示以下表达式,((a|b)|(c|d))

用户需要能够选择以下任何一项 (a|b)(c|d)或整个事件((a|b)|(c|d))

理想情况下,我希望他们能够通过键盘箭头导航,通过嵌套的子表达式上下移动,并在他们进入他们想要的子表达式时按Enter键。但是,如果它只能在鼠标点击时执行此操作,那也是可以接受的。

我遇到的主要问题是嵌套组件。我可以轻松地使整个表达式可选,但我不知道如何使用SWING组件允许子表达式可选。根据我的研究,Swing不允许以我需要的方式嵌套文本区域的标签,因此我正在寻找任何替代方案。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:2)

您可以在上面的评论中使用Joop建议的只读Highlighter上的DocumentListenerJTextField,在http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.htmlJTextFieldDemo部分中使用{{1}} }}。这样你可以突出显示你的(部分)字符串并监听选择的(子)字符串,并将其与原始字符串进行比较以检查匹配。