2011-11-01 12 views
5

Jeśli ktoś edytuje zawartość komórki w JTable i naciśnie klawisz enter, zawartość zostanie zmodyfikowana, a wybór tabeli przeniesiony do następnego wiersza.Jak ustawić JTable na edytowanej komórce

Czy to możliwe, aby zabronił JTable przejść do następnego wiersza po edycji komórki?

Powodem jest to, że mój program synchronizuje niektóre inne widżety przy wyborze komórki za pomocą ListSelectionListener i nie chcę, aby następny wiersz został wybrany po edycji bieżącej komórki.

Odpowiedz

7

Wiązanie dla Wprowadź domyślną jest Action nazwie selectNextRowCell. Aby zastąpić wpis na mapie wejściowej WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, musisz dostarczyć doNothing()Action, zgodnie z sugestią podaną w How to Use Key Bindings: How to Make and Remove Key Bindings.

+0

Świetna propozycja! Pełną pracą do wykonania jest dodanie wywołania do table.getCellEditor(). StopCellEditing(); w metodzie actionPerformed (...). Bez tego połączenia komórka pozostaje w trybie edycji po naciśnięciu klawisza użytkownika. – Martin

+0

Dobra uwaga; patrz także [Używanie edytora do sprawdzania poprawności wpisanego przez użytkownika tekstu] (http://download.oracle.com/javase/tutorial/uiswing/components/table.html#validtext). – trashgod

1

Nie jestem pewien, jak to zrobić, ale zajrzę do ActionMap. Powinieneś być w stanie zmodyfikować lub zamienić akcję, która jest zmapowana do klawisza "Enter".

Powodzenia!

Powiązane problemy