4

たとえば、JPanel[GridLayout(1,0)つまり、1行/行のみ]で文を表示し、その上に構文ツリー(または同様のもの)を描画できるようにするために、文を行として表示したいのStringそれぞれに 1 つの単語が含まれます。

次に、単一Stringの s を選択可能にするか ( a のようにJList)、少なくともJPanelviaで Location を取得できるようにする必要がありgetLocation()ます。

この時点までに、次のオプションを試しStringてみましたが、次の問題がありました。ただし、文を文のように見せ、下手にレイアウトされた表のように見せないようにするために、これを実行できるようにしたいと考えています。- : 必要なすべての機能がありますが、単一の「セル」のサイズを変更するオプションを知りません(上記参照)。また、JListの表示を1行/行に制限するのに苦労しています(別の質問を参照)。- : シングルの場所を取得する方法がわかりませんでしたJLabelJLabelJPanelStringJListStringJLabelJTextAreaStringに追加したJTextArea.

drawString() オプションになる可能性があることは承知していますが、AWT と Swing を混在させたくないので、使用することを恐れています。また、すべての singleのint値を計算する必要があります。そして、彼らの場所を取得できるかどうかはわかりません (ただし、とにかく計算する必要があるため、もちろんマップまたはベクターに保存できます)。xyStringint

提案に感謝します!ありがとう!

4

2 に答える 2

3

JTextAreaとメソッドを使用modelToView()/viewToModel()して、文字列内の位置にx、yを取得し、座標xとyに文字列内の位置を取得します。

UtilitiesクラスgetWordStart() getWordEnd() getRowStart() getRowEnd()メソッドも使用します。

于 2011-08-22T08:49:13.027 に答える
1

編集:コメントでcamickrが指摘したように、setSize()コンポーネントをレイアウトする適切な方法ではありません(これはそれぞれのによって自動的に行われるためLayoutManager、回答からそれぞれのコードを削除しました.

StanislavL's answerによってトリガーされ、1つだけではなく、JTextFieldそれぞれに1つを使用することによって(StanislavLによって提案されたように)、 を介してそれを行う解決策を見つけました。String

getLocation()それぞれ簡単にできるようになりましJTextFieldた。本当に簡単です!

StanislavL の回答に感謝したいと思います。彼の回答がなければ、これについて考えたことはありませんでした。camickr のコメントには感謝します。

于 2011-08-22T12:34:38.723 に答える