1

アイデアは非常に単純です:JTreeのさまざまなサブクラスで構成される がありTreeNodeます。

問題: ユーザーがタイプのノードのみを選択できるようにするにはどうすればよいXyNodeですか?

TreeSelectionListenerユーザーが選択する可能性のある「間違った」ノードを追加して選択解除することを考えましたが、それは迅速で汚いようです。

自分で書くことTreeSelectionModelが頭に浮かびましたが、インターフェイスは仕事のためのものではないようです。

誰もがこれに対する経験や良い解決策を持っていますか?

4

2 に答える 2

2

理解した。TreeSelectionModelそれを行うのに適した場所でした。

UI は、ユーザーがクリックしたときにsetSelectedPaths(TreePath[] paths)とを呼び出し、それらのメソッドの戻り値を Selection として設定します。addSelectedPaths(TreePath[] paths)TreeSelectionModel

DefaultTreeSelectionModelたとえば次のように、2 つのメソッドを拡張してオーバーライドするだけです。

public TreePath[] setSelected(TreePath[] paths) {
    super(getValidPaths(paths));
}

public TreePath[] getValidPaths(TreePath[] paths) ...

任意の種類のチェックを追加でき、追加 (Ctrl-クリック) と設定 (通常のクリック) を区別して処理できます。

于 2013-07-29T15:12:21.187 に答える
0

私は以前にこの提案を見たことがあります:

「それがベストプラクティスかどうかはわかりませんが、検証したいコンポーネントに FocusListener を配置することもできます...イベントが呼び出されたときに検証を呼び出し、フォーカスを当てたくない場合はイベントを消費します検証が失敗したために移動しましたか?」

JTree 選択の変更が起こらないようにする最善の方法は?

于 2013-07-29T14:38:24.720 に答える