背景知识:我是一位经验丰富的C ++程序员,但是我目前正在自学Java。
我有一个带有多个JTextField的应用程序,并且我希望在单击该字段时突出显示该字段的内容。我知道我可以为每个脚本编写一个简单的内联FocusAdapter,但是我想编写一个嵌套的类,用于每个JTestField的addFocusListener。我发现以下代码有效:
private class textFieldFocusListener extends FocusAdapter {
@Override
public void focusGained(FocusEvent arg0) {
((JTextComponent) arg0.getComponent()).selectAll();
}
}
...但是JTextComponent演员让我有些麻烦。在C ++中,强制转换不受欢迎,而且我对Java的最佳实践不熟悉。
那么,这种将JTextComponent强制转换为“好的” Java编码的解决方案,还是有更好/更干净的解决方案?
最佳答案
JTextComponent演员让我有些麻烦
只要您注意仅将FocusListener添加到JTextComponents(例如JTextFields),就可以做到这一点。如果您要格外小心,可以随时执行checkof实例,
Component comp = e.getComponent();
if (!(e instanceof JTextComponent)) {
return;
}
但可能没有必要。
也许更好:创建一个添加FocusListener且仅接受JTextComponent作为其参数的方法。