7

JTable モデル オブジェクト内のすべての選択をキャンセルする必要があります。Javaは、私が理解している限り、必要なことを行うこの関数「clearSelection()」を提供します。

しかし、なぜこの関数を JTable オブジェクトだけでなく JTable オブジェクトの選択モデルでも呼び出すことができるのか、私は混乱しています。

 1) mytable.clearSelection();
 2) mytable.getSelectionModel().clearSelection();

どちらの方法でも機能しますが、SelectionModel の clearSelection() ( at 2) など) がどのような状況で意味を持つのかわかりません。私が知る限り、SelectionModels は、JTable が許可する選択の種類を決定するために使用されます。SelectionModel を使用して、正確に 1 行の選択のみを許可します

//allow only one row to be selected
mytable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

どのような状況でどの方法が優先されますか? 方法 1 を使用しない正当な理由はありますか?

どなたか初心者にわかりやすい説明があれば幸いです。事前にt​​hx。

4

2 に答える 2

8

これが実装ですJTable#clearSelection()

public void clearSelection() {
    selectionModel.clearSelection();
    columnModel.getSelectionModel().clearSelection();
}

ご覧のとおり、ListSelectionModel列および/または行および/またはセルを選択できるため、クリアされたものが2つあります。

Oracleチュートリアルから:

JTable は、行と列の交点として管理される非常に単純な選択の概念を使用します。完全に独立したセル選択を処理するようには設計されていません。

ListSelectionModelどの行が選択されているか、いくつかの行を選択するにはどうすればよいかなど、選択のすべての側面を処理します...選択の種類だけではありません!
詳細については、Oracle JTable チュートリアルを参照してください。

于 2013-08-20T14:40:57.730 に答える