4

为了能够在一个句子上显示一个句子,比如说,JPanel一个GridLayout(1,0)[即只有一行/行],然后能够在它上面绘制一个语法树(或类似的),我想将句子显示为一行s ,String每个包含一个单词。

然后,单个Strings 应该是可选择的(如在 a 中JList),或者我至少应该能够在JPanelvia上获得它们的位置getLocation()

到目前为止,我已经尝试了以下选项,并且遇到了以下问题: - Single Strings as JLabels:JLabels 被拉伸以填充JPanel宽度,重新调整它们的大小以适应String它们正在显示的单个似乎很复杂。但是,我希望能够做到这一点,以使句子看起来像一个句子,而不是像一张布置得很糟糕的桌子。- JList:我想要的所有功能,但我不知道重新调整单个“单元格”大小的选项String(参见JLabel上文)。另外,我很难将 JList 的显示限制为单行/行(参见我的另一个问题)。- JTextArea:我不知道如何获得单曲的位置Strings 我已附加到JTextArea.

我知道这drawString() 可能是一种选择,但我害怕使用它,因为我不想混合 AWT 和 Swing。此外,我需要计算int每个. 而且我不确定我是否能够得到他们的位置(尽管我当然可以将他们的 s 保存在 Map 或 Vector 中,因为无论如何我都必须计算它们)。xyStringint

感谢您的任何建议!谢谢!

4

2 回答 2

3

我将使用JTextAreaand 方法modelToView()/viewToModel()来获取 x,y 以获取 nthe 字符串中的位置以及字符串中的坐标 x 和 y 的位置。

也使用UtilitiesgetWordStart() getWordEnd() getRowStart() getRowEnd()方法。

于 2011-08-22T08:49:13.027 回答
1

编辑:正如 camickr 在评论中指出的那样,这setSize()不是布置组件的合适方式(因为这是由各自的自动完成的LayoutManager,我已经从我的答案中删除了各自的代码。

由StanislavL 的回答触发,我找到了一个解决方案来通过JTextField,尽管每个人使用一个String而不是一个(如 StanislavL 建议的那样)。

我现在可以轻松地getLocation()为每个JTextField. 很简单,真的!

我要感谢 StanislavL 的回答,如果没有他的回答,我永远不会想到这一点,还要感谢 camickr 的评论。

于 2011-08-22T12:34:38.723 回答