开发者

select all on focus in lots of jTextField

开发者 https://www.devze.com 2023-04-04 06:09 出处:网络
I have lots of jTextFields in my application (About 34 jTextFields) and开发者_如何学JAVA I want all of them select all of their text when get focus and select none of text on focus lost.

I have lots of jTextFields in my application (About 34 jTextFields) and开发者_如何学JAVA I want all of them select all of their text when get focus and select none of text on focus lost.

Is there any way to do this with one listener or should I write a "FocusGained" and a "FocusLost" for each of these 34 jTextFields?

Thanks


Create a class for this task:

static class FocusTextField extends JTextField {
    {
        addFocusListener(new FocusListener() {

            @Override
            public void focusGained(FocusEvent e) {
                FocusTextField.this.select(0, getText().length());
            }

            @Override
            public void focusLost(FocusEvent e) {
                FocusTextField.this.select(0, 0);
            }
        });
    }
}

Example usage (code below):

select all on focus in lots of jTextField

public static void main(String[] args) throws Exception {

    JFrame frame = new JFrame("Test");
    frame.setLayout(new GridLayout(5, 1));

    frame.add(new FocusTextField());
    frame.add(new FocusTextField());
    frame.add(new FocusTextField());
    frame.add(new FocusTextField());
    frame.add(new FocusTextField());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}


Create on class and extend the JTextField now implement whatever you want in this class. And where you can create object of JTextField like this

JTextField txt1 = new JTextField();
frm.add(txt1);

instead of do this way

JTextField txt1 = new CustomText();
frm.add(txt1);

so you have to set the common class for the Text field


Is there any way to do this with one listener

You can use the KeyboardFocusManager. See the example from Global Event Listeners.


I would say the easy way to do it is add an action on click that simply selects all

private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {                                         
    jTextField1.selectAll();
}                      
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号