単純なJTableがありますが、セル選択を追加して、ユーザーがマウスで左クリックしたときにセルが選択されるようにするにはどうすればよいですか。ユーザーが他の行で他のセルを選択すると、そのセルも選択されます。ユーザーがすでに選択されているセルを左クリックすると、そのセルは選択解除されます。
どんなヒントでも大歓迎です、ありがとう。
スーシアンス
ユーザーが他の行で他のセルを選択すると、選択されたセルが選択されます。
これは、非連続セルの選択では不可能ですListSelectionMode
。これは、2次元しかないためです。
とで可能である可能性がありますが(試したことはありません)custom Renderer
、モデルに含まれるのは、を格納してMouseListener
/cloneを追加する必要があります。XxxTableModel
selected cell(s)
Boolean value
このようなもののために、私が自分で行ったことは、選択したセルを格納するための ArrayList を作成することです。次に、どのセルが選択されているかを知る必要があるときにその配列を参照します。次に、カスタム セル レンダラーを作成しました。そのクラスでは、選択したセルの ArrayList にセルが含まれているかどうかを確認し、含まれている場合は、選択したテーブル セルの色に設定します。
... public class MyTableCellRenderer extends DefaultTableCellRenderer
...
//Defined in your class somewhere
//Add column values to it when clicked on or selected
private final Color selectedColumn = Color.YELLOW;
List<String> selectedCols = new ArrayList<String>();
if (selectedCols.contains(cellValue)) {
tableCell.setBackground(selectedColumn);
} else {
tableCell.setBackground(UIManager.getColor("Table.background"));
}