作为我在Java swing中实现的GUI设计的一部分,我需要用户能够选择树的部分或子部分,就像表示为字符串的结构一样。
例如,如果我要显示以下表达式,((a|b)|(c|d))
用户需要能够选择以下任何一项
(a|b)
,(c|d)
或整个事件((a|b)|(c|d))
。
理想情况下,我希望他们能够通过键盘箭头导航,通过嵌套的子表达式上下移动,并在他们进入他们想要的子表达式时按Enter键。但是,如果它只能在鼠标点击时执行此操作,那也是可以接受的。
我遇到的主要问题是嵌套组件。我可以轻松地使整个表达式可选,但我不知道如何使用SWING组件允许子表达式可选。根据我的研究,Swing不允许以我需要的方式嵌套文本区域的标签,因此我正在寻找任何替代方案。
非常感谢任何帮助或建议。
答案 0 :(得分:2)
您可以在上面的评论中使用Joop建议的只读Highlighter
上的DocumentListener
和JTextField
,在http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html的JTextFieldDemo
部分中使用{{1}} }}。这样你可以突出显示你的(部分)字符串并监听选择的(子)字符串,并将其与原始字符串进行比较以检查匹配。