2015-05-26 3 views
0

Я использую автозаполнение в моей JTable колонке, которая использует вверх и вниз ключ двигаться так, как JTable как я могу отключить вверх и вниз сочетание клавиш из JTable только для этот столбец и снова возобновить свою функциональность для следующих столбцов.Отключить по умолчанию KeyBinding из JTable для одного столбца

table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) 
    .put(KeyStroke.g etKeyStroke(KeyEvent.VK_UP, 0), "UP"); 
table.getActionMap() 
    .put("UP", new AbstractAction() { 
     @Override 
     public void actionPerformed(ActionEvent ae) { 
     //do something on JTable enter pressed 
     } 
     }); 

теперь я должен использовать этот код, если codition отключить до ключа, но как только управление выходит из если Conditon я хочу поведение по умолчанию до ключа, который не happning

+2

Переопределение слушателя –

+0

Я сделал это, но его отключить для всех столбцов не для конкретного. Я использовал для этого класс INPUTMAP и ActionMap. – ankit12

+0

Если вы можете предоставить какой-то код, люди могут вам помочь. –

ответ

0

Чувствительность столбцов и строк - сложная вещь с JTables; но он доступен для запроса. Объекты TableColumn не распространяются на Component, поэтому вы не можете просто добавить к ним прослушиватель действий. Однако, просто добавив в этот раз:

new AbstractAction() { 
    @Override 
    public void actionPerformed(ActionEvent ae) { 
     //Following line is untested code, but you get the idea: 
     if(!Arrays.asList(table.getSelectedColumns()).contains([your column number]) { 
      //perform up action 
     } 
    } 
} 

должен делать эту работу, и это, вероятно, более эффективным, чем добавление и удаление анонимного класса в JTable. (Для Swing/AWT, все столбцы выглядят одинаково.)

Снова прошу прощения за то, что я не тестировал этот код лично, я выхожу из двери для двухдневной поездки. Моя основная мысль заключается в том, что ваш лучший вариант - запросить столбец в ActionListener после вызова метода с помощью простого булевого теста.

+0

Я пробовал это, но он давал аналогичную проблему, как до того, как мой «номер столбца равен 1», но до получения отключений для всех столбцов. – ankit12

+0

Интересно. Возможно, я не полностью понимаю ваш вопрос. Обновленный SSCCE будет очень полезен. –

0

Я использую автозаполнение в моей JTable колонке

Это означает, что некоторые компоненты другого, что JTable имеет фокус. Поэтому вы добавляете свои настраиваемые привязки клавиш к этому компоненту, а не к JTable. Затем эти привязки клавиш будут иметь приоритет над привязками клавиш в таблице.

+0

Я добавил свой keybinding к компоненту Jlist, но его не работает. – ankit12

+0

@ ankit12, опубликуйте свой [SSCCE] (http://sscce.org/), демонстрирующий проблему. – camickr

Смежные вопросы