如果在侦听器类上有多个if

时间:2017-08-17 16:52:10

标签: java swing focuslistener

是否有更简洁/更简单的方法使用侦听器的getSource()执行if-then-else语句?

我有一个FocusListener我需要突出显示触发FocusListener的JTextField中的文本

    private class calculator implements FocusListener{ 


        public void focusGained(FocusEvent evt) {


            if(evt.getSource()==txtInitialRead ){   


                txtInitialRead.selectAll(); 

            }

我的问题是我有很多JTextFields,需要在FocusListener中为每一个创建一个if语句。有没有简单的方法呢?切换分支不适用于此对象类型。

当然这不是什么大不了的事,我认为必须有一个更简洁的方法来做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:3)

只需突出显示当前组件:

@Override
public void focusGained(FocusEvent evt) {
    JTextComponent tComponent = (JTextComponent) evt.getSource();
    tComponent.selectAll();
}

具有此侦听器的任何JTextField(或其他文本组件)将在/获得焦点时选择所有文本。

不要将此侦听器添加到非文本组件中,否则您可能会抛出类强制转换异常。