2017-02-15 2 views
2

J'ai un Tab avec un certain contenu: ScrollBar et d'autres.JavaFX TabPane désactiver la commutation d'onglet par les touches

Le ScrollBar a gestionnaire d'événements pour les clés: gauche et droit. Mais si j'appuie sur ces boutons, Tabs est commuté, car TabPane dispose également d'un gestionnaire de clé. Comment désactiver le gestionnaire d'événements par défaut pour TabPane ou changer la politique de commutation?

Répondre

1

Le problème est qu'un ScrollBar n'est pas focus traversable par défaut et les événements clés sont uniquement déclenchés pour Node s.

Vous pouvez régler la mise au point ScrollBar traversable:

sb.setFocusTraversable(true); 

sb.setOnKeyPressed(e -> { 
    if (e.getCode().equals(KeyCode.RIGHT)) 
     sb.setValue(sb.getValue()+0.01); 
    else if(e.getCode().equals(KeyCode.LEFT)) 
     sb.setValue(sb.getValue()-0.01); 
}); 

Dans ce cas, chaque fois que le ScrollBar se concentre, les principaux événements sont traités.