R
redbomber
Gast
Hallo zusammen:
Ich habe eine Frage und zwar wie ich das folgende Problem lösen kann.
Ich besitzte eine JTable, bei der die Zellen einzeln selektiert werden können.
Zusätzlich ist es für den Anwender möglich durch gedrückthalten der STRG-Taste mehrere einzelne Zellen zu selektieren.
Problem:
Als nächstes möchte ich dem Anwender jetzt aber noch die Möglichkeit geben durch gedrückt halten der SHIFT-Taste ganze Bereiche von Zellen zu selektieren.
Dazu müsste ich mir ja irgendwie die erste gedrückte Zelle merken, dann auf die Shift-Taste reagieren und bis zur zweiten gedrückten Zelle alles markieren.
Wie aber kann ich mir merken, von welcher bis zu welcher Zelle ich alles markieren muss?
Bisher habe ich es wie folgt implementiert:
Ich habe eine Frage und zwar wie ich das folgende Problem lösen kann.
Ich besitzte eine JTable, bei der die Zellen einzeln selektiert werden können.
Code:
getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Zusätzlich ist es für den Anwender möglich durch gedrückthalten der STRG-Taste mehrere einzelne Zellen zu selektieren.
Problem:
Als nächstes möchte ich dem Anwender jetzt aber noch die Möglichkeit geben durch gedrückt halten der SHIFT-Taste ganze Bereiche von Zellen zu selektieren.
Dazu müsste ich mir ja irgendwie die erste gedrückte Zelle merken, dann auf die Shift-Taste reagieren und bis zur zweiten gedrückten Zelle alles markieren.
Wie aber kann ich mir merken, von welcher bis zu welcher Zelle ich alles markieren muss?
Bisher habe ich es wie folgt implementiert:
Code:
// Fügt den MouseListener hinzu
addMouseListener(new MouseListener() {
// Mouse Listener um klick auf Probes entgegen zu nehmen.
// Wird aufgerufen, wenn innerhalb kurzer Zeit eine Maustaste gedrückt und wieder losgelassen wird
public void mouseClicked(MouseEvent e) {
// falls die linke Maustaste gedrückt wurde
if (e.getButton() == MouseEvent.BUTTON1) {
int mods = e.getModifiersEx();
mods &= MouseEvent.CTRL_DOWN_MASK;
int row = rowAtPoint(e.getPoint());
int column = columnAtPoint(e.getPoint());
if(e.isShiftDown()){
// überprüfen ob STRG gedrückt wird
if (mods != 0) {
System.out.println("Selection Index " + getSelectionModel().getMinSelectionIndex());
} else {
// wähle nur eine Probe aus
viewModel.setProbeSelection(pb);
System.out.println("Selection Index " + getSelectionModel().getMinSelectionIndex());
}
} else if(e.isControlDown()){
//TODO:
System.out.println("mods " + mods + " mods2 " + mods2);
}
repaint();
}
}