为了能够在带有 GridLayout(1,0)
的 JPanel
上显示一个句子 [即只有一行/行] 和然后能够在其上方绘制语法树(或类似树),我想将句子显示为一行 String
,每个字符串包含一个单词。
单个 String
应该可以选择(如在 JList
中),或者我至少应该能够在 JPanel 上获取它们的位置
通过 getLocation()
。
到目前为止,我已经尝试了以下选项,但遇到了以下问题:
- 单个 String
作为 JLabel
:JLabel
被拉伸(stretch)以填充 JPanel
宽度,重新调整它们的大小以适应它们显示的单个 String
似乎很复杂。但是,我希望能够做到这一点,使句子看起来 像一个句子,而不像一张布置得很糟糕的 table 。
- JList
:我想要的所有功能,但我不知道有一个选项可以调整单个 String
的“单元格”的大小(参见 JLabel
上面)。此外,我很难将 JList 的显示限制为单行/行(参见 another of my questions )。
- JTextArea
:我无法理解如何获取附加到 JTextArea
的单个 String
的位置。
我知道 drawString()
可能 是一个选项,但我不敢使用它,因为我不想混合使用 AWT 和 Swing。此外,我需要为每个 String
计算 x
和 y
的 int
值。而且我不确定我是否能够获得它们的位置(尽管我当然可以将它们的 int
保存在 Map 或 Vector 中,因为无论如何我都必须计算它们)。
感谢任何建议!谢谢!
最佳答案
我会使用 JTextArea
和方法 modelToView()/viewToModel()
来获取 x,y 在字符串中的位置以及在字符串中的坐标 x 和 y 的位置.
还可以使用 Utilities
类 getWordStart() getWordEnd() getRowStart() getRowEnd()
方法。
关于java - 在 JComponent 上显示一行字符串,以便可以选择单个字符串/它们的位置 getLocation()-able?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144809/