大家可以运行下,当输满5个字符时,就不能通过鼠标框选后修改了。(不过BackSpace还能用)
不知道有没有高手能解开这个问题。
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);
}
}

解决方案 »

  1.   

    楼上的问题很简单,你判断长度的时候,你要先把已选中的部分去掉 text.getSelectionText() 
     if (text.getText().length()-text.getSelectionText().length > 4 && e.getKeyChar() != '\b')
                        e.setKeyChar('\0');
    结贴给分吧。
      

  2.   

    回复1楼,我的意思是,比如打12345,然后用鼠标任意选择,然后再进行输入修改。(不是用BackSpace来删除,而且打入其他字符)
    关于2楼,你的代码我试验过了,不行,运行后在里面打字会跳出很多错,我修改了下

    if ((text.getText().length())- (text.getSelectedText().length()) > 4 && e.getKeyChar() != '\b')
      

  3.   

    JTextField jtf = new JTextField("", 30);
    请问当我用这样写的时候为什么无法限定输入字符数为30个?