日期:2014-05-20  浏览次数:20772 次

JTextField 限制输入字符数后,当输满时则无法修改了
大家可以运行下,当输满5个字符时,就不能通过鼠标框选后修改了。(不过BackSpace还能用)
不知道有没有高手能解开这个问题。

Java code
public class Test2 extends JFrame {
    JPanel pane;
    JTextField text;
    JLabel str;

    public Test2() {
        super("字符输入限制");
        pane = new JPanel();
        getContentPane().add(pane);
        text = new JTextField(12);
        str = new JLabel("最多可输入   5   个字符:");
        text.addKeyListener(new KeyListener() {
            public void keyTyped(KeyEvent e) {
                if (text.getText().length() > 4 && e.getKeyChar() != '\b')
                    e.setKeyChar('\0');
            }

            public void keyPressed(KeyEvent e) {
            }

            public void keyReleased(KeyEvent e) {
            }
        });
        pane.add(str);
        pane.add(text);

    }

    public static void main(String[] args) {
        SwingConsole.run(new Test2(), 200, 200);
    }
}


------解决方案--------------------
楼主,可以修改啊!我刚试过了
------解决方案--------------------
楼上的问题很简单,你判断长度的时候,你要先把已选中的部分去掉 text.getSelectionText() 


 if (text.getText().length()-text.getSelectionText().length > 4 && e.getKeyChar() != '\b')
e.setKeyChar('\0');


结贴给分吧。