1

2 JTreeJTree1と。がありJTree2ます。ノード(国、都市、色、青など)はすべてJCheckboxesとして実装されるため、ユーザーは対応するチェックボックスを選択することで、各都市または国全体の特定の色を選択できます。

問題:

Q1。国や都市ごとに色を選べるようにしたいと思います。つまり、ユーザーがcity1.1青と紫のcity2.1色と赤の色を使用したい場合は、最初にcity1.1チェックボックスを選択してから青と紫を選択する必要がありますcity2.1。その後、を選択すると、青と紫のチェックボックスが自動的に選択解除され、次のようになります。ユーザーはの色を選択できますcity2.1。ただし、ユーザーがcity1.1もう一度選択すると、JTree2city1.1で選択した色(buleとviolet)が表示されます。

  • したがって、この目的のために、JTree(チェックボックスとしてノードを使用)を実装するための正しいオプションですか、それとも他のオプションを使用する必要がありますかJComponent

  • JTreeが正しいオプションである場合、各都市の色をどのように思い出すことができますか?

4

1 に答える 1

2

したがって、この目的のために、JTree (チェックボックスとしてのノードを持つ) を実装する正しいオプションですか、それとも他の JComponent を使用する必要がありますか?

あなたが何を意味しているのか正確にはわかりませんが、私は個人的に、右側にオプションを表示するためにJTreeを使用しません。この特定のケースでは、オプションを含むJPanelを提示する方がはるかに簡単だと思います。あなたの例では左側は問題ないようですが、どのような種類のデータがツリーに入るのかはよくわかりません。

JTree が正しい選択肢である場合、各都市の色を覚えるにはどうすればよいでしょうか?

注意してください、私はいくつかの仮定をするつもりです:

  1. 国と都市を含む左側はJTreeのままで、右側はJTreeまたはJPanelのままです。
  2. 左側の別のノードを選択する前に、ユーザーが最後に設定したとおりにオプションを表示する必要があります。

これを実現する最も簡単な方法は、 TreeSelectionListenerをツリー (国と都市を含むもの) の選択モデルに追加することです。TreeSelectionListenerには、選択されたノードと選択されるノード提供する TreeSelectionEvent が提供さます。これにより、選択が変更されるノードに設定されたカラー設定を、選択が変更れるノードに抽出する機会が提供さます。JTreeから取得した TreeSelectionModel に TreeSelectionListener を追加する必要があります。、そのgetSelectionModelメソッドを呼び出すことによって。

この手法を使用する場合、最後に選択したオプションで操作を実行するときに、操作を実行する前にもう一度オプションを取得する必要があります。たとえば、「保存」ボタンがあった場合、左側でノードが選択されている色設定を抽出するをチェックする必要があります。これは、リスナーがキャプチャしていない、ユーザーが行った可能性のある変更をキャプチャするためです (リスナーは左側の選択が変更された場合にのみトリガーされるため)。

例が必要な場合は、http: //www.box.net/shared/hgbet4uf6k に書いています。

于 2010-03-09T13:49:02.740 に答える