0
Код, приведенный ниже, должен был перенести фокус на следующий элемент управления после нажатия клавиши Enter в любое время, событие срабатывает, но .transferFocus не передает фокус, что может быть неправильным? СпасибоJSpinner не передает фокус при нажатии Enter
//JSpinner Creation Code:
private javax.swing.JSpinner edtStockMax;
edtStockMax = new javax.swing.JSpinner();
edtStockMax.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1)));
//Code to bind the Enter key
JSpinnerField1.getActionMap().put("enter-action", new AbstractAction("enter-action")
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Transfer focus inside JSpinner");
field.transferFocus();
}
});
JSpinnerField1.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("ENTER"), "enter-action");
Если счетчик не находится в режиме редактора, редактор не отображается, поэтому он не будет получать события. Я бы предположил, что вам также необходимо выполнить привязку клавиш к объекту JSpinner. – camickr
вы попробовали 'requestFocusInWindow()' (см. [This] (http://stackoverflow.com/questions/15223416/focus-on-component-when-a-panel-is-loaded/15223913#15223913) пример) vs 'transferFocus()'? –
Он находится в режиме редактора, код выше работает, за исключением процедуры «transferFocus()», он работает без ошибок, но не передает фокус на следующий элемент управления, фокус остается на JSpinner. –