Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > как выйти из editor по ENTERу


Автор: skif18 30.11.2009, 19:02
Объявление режима редактирования для ячейки таблицы.
Код

     javax.swing.text.JTextComponent editor = (javax.swing.text.JTextComponent) jTable.getEditorComponent();
                            editor.requestFocus(); 
       
                            if (editor instanceof JTextComponent)
                            { 
                                ((JTextComponent)editor).selectAll();  
                                String str = Character.toString(e.getKeyChar());
                                ((JTextComponent)editor).setText(str);
                            }


как выйти из редактирования по нажатию клавиши ENTER?

Автор: mgarin 1.12.2009, 02:06
Код
        editor.addKeyListener ( new KeyAdapter()
        {
            public void keyReleased ( KeyEvent e )
            {
                if ( e.getKeyCode () == KeyEvent.VK_ENTER )
                {
                    table.getCellEditor ().stopCellEditing ();
                }
            }
        } );

Автор: skif18 1.12.2009, 10:41
Код

 if(e.getKeyCode() >= KeyEvent.VK_0  && e.getKeyCode() <= KeyEvent.VK_9 || e.getKeyCode() >= KeyEvent.VK_NUMPAD0  && e.getKeyCode() <= KeyEvent.VK_NUMPAD9)
                        {

                          JTextComponent editor = (JTextComponent) jTable.getEditorComponent();
                           editor.addKeyListener ( new java.awt.event.KeyAdapter()
                            {
                                public void keyReleased ( KeyEvent e )
                                {
                                 
                                    if ( e.getKeyCode () == KeyEvent.VK_ENTER )
                                    {

                                      
                                        jTable.getCellEditor ().stopCellEditing ();
                                        
//                                        jTable.changeSelection(0,0, false, false);
                                        jTable.requestFocus();
                                      
                                    }
                                }
                            } );
                            editor.requestFocus(); // fix
       
                            if (editor instanceof JTextComponent)
                            { 
                                ((JTextComponent)editor).selectAll();  // а это так, бонус...
                                String str = Character.toString(e.getKeyChar());
                                ((JTextComponent)editor).setText(str);
                            }
                        }    


Это условие расположено в методе  keyReleased() KeyListener'a таблицы.
Но у меня он не входит в   

e.getKeyCode () == KeyEvent.VK_ENTER 
это условие. ставлю сообщение и ничего. мертво.

Автор: mgarin 1.12.2009, 12:45
Значит у вас либо у компонента-едитора нет фокуса, 
либо вообще не заходит в листенер по другой причине.
Если же заходит - посмотрите какой код выдает событие и пропишите сравнение вручную.

Автор: skif18 8.12.2009, 11:38
воспользовался старым  
Код

    jTable.editCellAt(rowIndexStart,ColumnSel);

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