style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

JLIST multiple seleccion sin ctrl

es posible seleccionar los elementos de un JList sin usar Ctrl

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Cid

Según stackoverflow en la

Según stackoverflow en la respuesta mencionan que puedes redefinir el modelo de selección y lo hacen mediante una clase anónima, aunque dan otras alternativas.

ok

la idea es poder seleccionar con mouse varios con un solo click y con teclado cuando presiono hacia abajo me selecciona automático y eso no quiero , que las flechas de direccion sean solo para cuando llegue la opcion requeridad y se presione backscpace por ejemplo se seleccione dicha opcion.

Imagen de Cid

Esto ?

Creo que esto te puede ayudar link

ctrl

solo cuando uso la clase robot yy simulo la tecla ctrl presionada gro casi lo que necesito que cuando me desplazo con las tecla de arriba o abajo solo se desplaza y cuando presiono backspace o click de raton se selecciona lo malo es que las seleccionadas a pulsar nuevamente backspace no se deselecciona :(una idea??? no me gustaria usar la clase robot tampoco

MouseListener & InputMap

Básicamente necesitas reemplazar los listeners (MouseListener) asociados al seleccionar con el ratón y cambiar las acciones (InputMap) asociadas al presionar las teclas de retroceso, arriba y abajo. Si consigo algo de tiempo, pondré un ejemplo completo aquí.

He aquí el ejemplo

 

He aquí el ejemplo:

public static void main(String[] args) {
    String[] data = { "Java", "C/C++", "VB", "C#", "Ceylon", "Python", "Ruby" };
    JList<String> list = new JList<>(data);
    list.setBorder(BorderFactory.createLineBorder(Color.GRAY));
    for (MouseListener mouseListener : list.getMouseListeners()) {
        list.removeMouseListener(mouseListener);
    }
    list.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            int index = list.locationToIndex(e.getPoint());
            if (list.isSelectedIndex(index)) {
                list.removeSelectionInterval(index, index);
            } else {
                list.addSelectionInterval(index, index);
            }
            list.requestFocusInWindow();
        }
    });
    InputMap inputMap = list.getInputMap();
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0),
            inputMap.get(KeyStroke.getKeyStroke(KeyEvent.VK_UP, InputEvent.CTRL_MASK)));
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0),
            inputMap.get(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.CTRL_MASK)));
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0),
            inputMap.get(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.CTRL_MASK)));
    JOptionPane.showMessageDialog(null, list);
}

img

Se quitan los listeners por defecto para los eventos del Mouse y se agrega uno propio. El Look And Feel cargado define algunas acciones por defecto para ciertas combinaciones de teclas. De ahí que sólo haya que redefinir (o reasignar) las acciones para las teclas Arriba, Abajo y Retroceso, como requiere el OP.

~~~

jpaul

funciona perfecto y ya no tengo que usar la clase Robot...
pero tengo una duda es posible desmarcar con la misma tecla que marca que en este caso es Backspace??

Re: desmarcar con la misma tecla

pero tengo una duda es posible desmarcar con la misma tecla que marca que en este caso es Backspace??

Por supuesto que sí. El ejemplo funciona así. Puedes seleccionar una opción de la lista con la tecla Retroceso (o Backspace) si ésta tiene el foco y, de la misma manera, puedes de-seleccionar con la misma tecla una opción de la lista si ésta tiene el foco.

si

si es que probé con varias teclas y todo ok pero cuando intento configurarla con la barra espaciadora no me funciona.

Re: barra espaciadora

cuando intento configurarla con la barra espaciadora no me funciona

¿Te refieres a algo como lo siguiente?

...
InputMap inputMap = list.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0),
       inputMap.get(KeyStroke.getKeyStroke(KeyEvent.VK_UP, InputEvent.CTRL_MASK)));
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0),
       inputMap.get(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.CTRL_MASK)));
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0),
       inputMap.get(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.CTRL_MASK)));
...

~~~

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">