2012-01-20 5 views
0

Java Swingで実装しているGUIデザインの一部として、文字列として表される構造のようなツリーの部分または部分を選択できるようにする必要があります。例えば、私は、次の式を表示するには、((a|b)|(c|d))Swing GUIでネストされた部分式を選択する

した場合、ユーザーは、次の (a|b)(c|d)または全体の事((a|b)|(c|d))のいずれかを選択できるように

が必要になります。

理想的には、ネストされたサブエクスプレッションを上下に移動して、キーボードの矢印を使用して移動し、必要なサブ表現になるとEnterキーを押すことができます。しかし、マウスのクリックでこれを行うことが唯一可能なら、それも受け入れられます。

私がこれで抱えている主な問題は、入れ子のコンポーネントです。簡単に表現全体を選択可能にすることはできますが、SWINGコンポーネントを使用して部分式を選択可能にする方法はわかりません。私の研究に基づいて、Swingは必要な方法でテキスト領域のラベルを入れ子にすることはできませんので、私はどのような選択肢も探しています。

ご迷惑をおかけして申し訳ございません。

+3

私は生の文字列で作業することを避け、代わりにデータにツリーベースのモデルを使用することをお勧めします。その後、ツリービューを使用して表示できます。 http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html –

+0

データはツリーのようにカスタムオブジェクトに格納されているため、文字列としてユーザーに表示する必要があります(私は、問題をより明確に編集しました)。ツリービューは、外見を縦長ではなく横向きにカスタマイズできる限り有望です。 –

+3

HTMLテキスト "((a | b)..."を使用して、キーとマウスのクリックをキャプチャし、矢印キーを処理し、 "(...)"を強調表示する、読み取り専用のJTextFieldを作成できます。 –

答えて

2

あなたはセクションに関するJTextFieldDemoに次Highlighterし、上記のコメントでジョープによって提案された読み取り専用のJTextFieldDocumentListenerhttp://docs.oracle.com/javase/tutorial/uiswing/components/textfield.htmlを使用することができます。こうすることで、(部分)文字列を強調表示し、選択された文字列(サブ文字列)を聞き、元の文字列と比較して一致を確認することができます。

+0

これは良い解決策のようですが、私は週末に試してみるでしょうし、他の答えを待っています。私はあなたのものを受け入れたものとしてマークしています。ありがとうございました –

関連する問題