java - 在 JComponent 上显示一行字符串,以便可以选择单个字符串/它们的位置 getLocation()-able?

标签 java string swing jcomponent

为了能够在带有 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 计算 xyint 值。而且我不确定我是否能够获得它们的位置(尽管我当然可以将它们的 int 保存在 Map 或 Vector 中,因为无论如何我都必须计算它们)。

感谢任何建议!谢谢!

最佳答案

我会使用 JTextArea 和方法 modelToView()/viewToModel() 来获取 x,y 在字符串中的位置以及在字符串中的坐标 x 和 y 的位置.

还可以使用 UtilitiesgetWordStart() getWordEnd() getRowStart() getRowEnd() 方法。

关于java - 在 JComponent 上显示一行字符串,以便可以选择单个字符串/它们的位置 getLocation()-able?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144809/

相关文章:

PHP 在文件路径中转义\14 个字符

javascript - 如何替换字符串开头和其中特定位置的字符?

java - 如何在 Java 程序中获取 "ribbon"UI 组件,例如在 Office 2007 中?

java - 更新标签时,EDT 无法使用递归方法正常工作

java - 为什么我的 JTable CellRenderer 一直在运行?

java - 按路径将 zip 文件夹中的文件放入字符串数组中

java - 使用参数化 IN 子句时 N1QL 查询超时

java - 如何将 java.util.function.Predicate 实现为 Kotlin lambda?

java - 打印 JList 的所有内容作为输出

Python 在字符串中插入 "\"