Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Проблема с e.consume() для KeyEvent


Автор: skif18 25.1.2010, 17:03
Код

 if (e.getKeyCode() == KeyEvent.VK_DOWN) {    
                             if (e.isConsumed()) {
                                    return;
                                }
                            int row1=0; int col=0; int nul=0;
                             row1=jTable.getSelectedRow();
                             System.out.println("DOWN");
                            if((row1==jTable.getRowCount()-1)  & jTable.getColumnCount()>=jTable.getSelectedColumn()+5){
                                 col=jTable.getSelectedColumn();
                                 jTable.changeSelection(nul,col+5,false,false);
                                   e.consume();

                            }       
                              
                     
                        

Обрабатывает переход на начало след. нужного мне столбца. Но при редактировании ячейки таблицы не срабатывает нормально. Выделение перемещает на начало след. столбца, а режим редактирования не закрывает. т.е. фокус остается внизу предыдущего столбца.
Если убрать в конце e.consume() то работает как надо, но выделяет не первую, а вторую строку т.е. с индексом 1.

Автор: skif18 26.1.2010, 13:25
Код

if (e.getKeyCode() == KeyEvent.VK_DOWN) {    
                             if (e.isConsumed()) {
                                    return;
                                }
                            int row1=0; int col=0; int nul=0;
                             row1=jTable.getSelectedRow();
                             System.out.println("DOWN");
                            if((row1==jTable.getRowCount()-1)  & jTable.getColumnCount()>=jTable.getSelectedColumn()+5){
                                 col=jTable.getSelectedColumn();
                                  if(jTable.isEditing()==true){
                                     jTable.getCellEditor().stopCellEditing();
                                 }
                                 jTable.changeSelection(nul,col+5,false,false);
                                   e.consume();
                                   return;
                            }       

Так все работает прекрасно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)