为什么我们使用KeyEvent.VK_?而不是简单地使用角色

时间:2019-08-23 20:29:50

标签: java swing awt keyevent mnemonics

假设我们要为菜单项设置助记符,并且希望它是// exp = 2019-09-01 00:00 UTC var exp = 1567296000 var expDate = new Date(exp*1000); var expYear = expDate.getYear() + 1900 var expMonth = expDate.getMonth() + 1 var expDay = expDate.getDate() var expHours = "0" + expDate.getHours() var expMinutes = "0" + expDate.getMinutes() var expSeconds = "0" + expDate.getSeconds() var expFormatted = expYear + "-" + expMonth + "-" + expDay + " " + expHours.substr(-2) + ':' + expMinutes.substr(-2) + ':' + expSeconds.substr(-2); console.log(expFormatted)。我注意到几乎所有代码都将其写为:

'c'

我知道我们可以这样写:

menuitem.setMnemonic(KeyEvent.VK_C);

但是,第一种变体似乎更常见。这是为什么?为什么我们不只使用简单字符而不是类似menuitem.setMnemonic('c'); 的字符呢?第一个代码比第二个代码有什么优势?

1 个答案:

答案 0 :(得分:4)

在第二个示例中,字符“ c”是“魔术”字符。它现在恰好是正确的值,但将来可能不会。如果确实发生了变化,则必须有人找到键入“ c”的所有位置并进行修复。如果像第一个示例中那样使用常量表达式,则只需更改一个位置即可。

您可能会认为“但它当然不会改变,它将始终只是'c'”。肯定在某些时候常量可能会被夸大。例如,如果magic值仅使用一次,或者是100%永不更改的值。但是请考虑它是否变成“ c \特殊字符”之类的东西。使用常量代替魔术字符串或字符只是更安全和最佳实践。