Я хочу иметь возможность увеличить размер шага на JSpinner
, когда нажата определенная клавиша. То, что я пробовал до сих пор, заключалось в том, чтобы положить KeyListener
на мой счетчик, и когда нажата определенная клавиша, измените значение размера шага. Когда ключ освобождается, он должен вернуться к нему по умолчанию.Увеличьте размер шага на JSpinner при нажатии определенной клавиши
Я думаю, что мне не нужно прямо ставить KeyListener
на JSpinner
, а скорее на его кнопку.
Я не знаю, как достичь этого. Что меня путает, так это двойной Listener
.
Вот код, я написал для KeyListener
:
public class SpinnerKeyIncrement implements KeyListener {
JSpinner spinner;
SpinnerNumberModel spinnerModel;
public SpinnerKeyIncrement(JSpinner s) {
this.spinner = s;
if(spinnerModel == null)
spinnerModel = (SpinnerNumberModel) spinner.getModel();
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
spinnerModel.setStepSize(.10);
}
else if(e.getKeyCode() == KeyEvent.VK_SHIFT) {
spinnerModel.setStepSize(1);
}
}
@Override
public void keyReleased(KeyEvent e) {
spinnerModel.setStepSize(0.01);
}
@Override
public void keyTyped(KeyEvent e) {}
}
}
Sorry - что именно ISN Не работает? Что касается бит KeyListener, здесь всегда лучше использовать привязки клавиш. Если вы не получите помощь в ближайшее время, подумайте о создании и публикации [sscce] (http://sscce.org) или [минимальной примерной программы/mcve] (http://stackoverflow.com/help/mcve), где вы сконденсируйте свой код на самый маленький бит, который все еще компилируется и запускается, не имеет внешних зависимостей (например, необходимо связать с базой данных или изображениями), не имеет дополнительного кода, который не имеет отношения к вашей проблеме, но все еще демонстрирует вашу проблему. –
KeyBinding? что это такое? – Chax
[Что такое ключевые привязки?] (Https://www.google.com/?q=java+key+bindings&gws_rd=ssl#q=java+key+bindings) –