6

複数の行を持つJTableがあり、すべての行が散布図のポイントを介して表示されます。私がしなければならないのは、散布図で特定のポイントが選択されたときに、この選択をJTableの対応する行の選択に関連付ける必要があることです。

どの行を強調表示する必要があるかを表す整数があります。

私が試したのは:

    JTable table = new JTable();
...
...// a bit of code where I have populated the table
...
   table.setRowSelectionInterval(index1,index2);

したがって、ここでの問題は、このメソッドが指定された範囲[index1、index2]のすべての行を選択することです。たとえば、行1、15、28、188などを選択します。

どうやってそれをしますか?

4

4 に答える 4

14

1つの行だけを選択するには、開始インデックスと終了インデックスの両方として渡します。

table.setRowSelectionInterval(18, 18);

または、複数の連続していないインデックスを選択する場合は、次のようにします。

ListSelectionModel model = table.getSelectionModel();
model.clearSelection();
model.addSelectionInterval(1, 1);
model.addSelectionInterval(18, 18);
model.addSelectionInterval(23, 23);

ListSelectionModelまたは、独自のサブクラスを実装し、それを使用してテーブルと散布図の両方で選択を追跡する方が、散布図をリッスンしてテーブルを強制的に一致させるよりも、よりクリーンなソリューションであることがわかります。

于 2013-03-21T19:27:11.017 に答える
3

また、ListSelectionModelを使用せずに機能します。

table.clearSelection();
table.addRowSelectionInterval(1, 1);
table.addRowSelectionInterval(15, 15);
table.addRowSelectionInterval(28, 28);
...

setRowSelectionIntervalは常に前に現在の選択をクリアするため、呼び出さないでください。

于 2013-08-12T07:32:41.130 に答える
1

1つのメソッド呼び出しでランダムな選択を設定する方法はありません。この種の選択を実行するには、複数のメソッドが必要です。

table.setRowSelectionInterval(1, 1);
table.addRowSelectionInterval(15, 15);
table.setRowSelectionInterval(28, 28);
table.addRowSelectionInterval(188 , 188 );

等々....

于 2013-03-21T19:31:19.520 に答える
1

これを実現するための一般的な方法は次のとおりです。

public static void setSelectedRows(JTable table, int[] rows)
{
    ListSelectionModel model = table.getSelectionModel();
    model.clearSelection();

    for (int row : rows)
    {
        model.addSelectionInterval(row, row);
    }
}
于 2017-04-05T23:56:46.403 に答える