为了能够在JPanel
上显示一个句子GridLayout(1,0)
[即只有一行/行]然后能够绘制语法树(或类似句子) )在它之上,我想将句子显示为一行String
s,每行包含一个单词。
单个String
应该是可选择的(如在JList
中),或者至少应该能够通过{{1}在JPanel
上获取其位置}。
到目前为止,我尝试了以下选项,并遇到以下问题:
- 单getLocation()
作为String
s:JLabel
被展开以填充JLabel
宽度,重新调整它们以适合单JPanel
个String
显示似乎很复杂。然而,我希望能够做到这一点,使句子看起来像一个句子而不是像一张布置不好的桌子。
- JList
:我想要的所有功能,但我不知道可以选择重新调整单个String
的“单元格”(参见上面的JLabel
)。此外,我很难将JList的显示限制为单行/行(参见another of my questions)。
- JTextArea
:我无法理解如何获取我附加到String
的单个JTextArea
的位置。
我知道drawString()
可能是一个选项,但我不敢使用它,因为我不想混合使用AWT和Swing。另外,我需要为每个int
计算x
和y
的{{1}}值。而且我不确定我是否能够获得他们的位置(尽管我当然可以将他们的String
保存在地图或矢量中,因为无论如何我必须计算它们。)
感谢任何建议!谢谢!
答案 0 :(得分:3)
我会使用JTextArea
和方法modelToView()/viewToModel()
来获取x,y表示字符串中的位置以及坐标x和y的字符串中的位置。
还使用Utilities
类getWordStart() getWordEnd() getRowStart() getRowEnd()
方法。
答案 1 :(得分:1)
编辑:正如评论中的camickr所指出的,setSize()
不适合布局组件(因为这是由相应的LayoutManager
自动完成的,我已从我的相应代码中删除了答案。
由StanislavL's answer触发,我找到了一个解决方案,可以通过JTextField
来完成,虽然每个String
使用一个而不只是一个(正如StanislavL所建议的那样)。
我现在可以轻松getLocation()
为每个JTextField
。很简单,真的!
我要感谢斯坦尼斯拉夫的回答,没有这个回答我就不会有这个问题,并且对他的评论表示不满。