#java
#java
Вопрос:
@Override
public void keyPressed(KeyEvent e) {
if ((e.getKeyCode() == KeyEvent.VK_ENTER) amp;amp; e.isShiftDown()) {
msgSend.append("n");
} else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage();
}
else if ((e.getKeyCode() == KeyEvent.VK_X) amp;amp; e.isControlDown()) {
System.exit(0);
}
}
Комментарии:
1. Редактирование изменено
amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;
наamp;amp;
. Это правильно?
Ответ №1:
Вероятно, это потому, что ваша логика здесь не оптимальна. Я думаю, это было бы лучше:
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
e.isShiftDown() ? msgSend.append("/n") : sendMessage();
} else if(...) {
...
}
кроме того, если это в конечном итоге станет большим блоком if-else if, я бы использовал вместо этого оператор switch .
редактировать: просто чтобы добавить еще немного контекста. Если вы собираетесь фильтровать как по нажатию клавиши, так И по нажатию других клавиш, таких как shift, ctrl и т. Д., При нажатии клавиши, Вы хотите разделить if или cases на основе типа. т. Е. Вы хотите, Чтобы каждый блок сначала фильтровался по нажатию клавиши, а затем внутри блока были блокидля проверки нажатий shift и ctrl. Это вместо одного огромного блока else-if, который охватывает все случаи, такие как enter press, enter press shift, enter press ctrl.
psuedocode:
if(enter pressed) {
if(control is down) {}
if(shift is down) {}
} else if(space bar pressed) {
if(control is down) {}
...
}
вместо:
if(enter pressed and control down) {}
if(enter pressed and shift down) {}
if(enter pressed) {}
Комментарии:
1. Это код из моего проекта колледжа в chat Messenger с использованием Java