我给jtextfield添加了 键盘监控,将获的的值用setText()副给jtextfield但是,问题是每次jtextfield接受一个键盘值后总是再后面多显示一个小写的字母,比方我按下A ,用setText给文本框后,总是多出一个a结果就是:A aaa...我想只接受setText的值,而不要直接输入的值应该怎么弄呢。我不要setEditabled..灰掉
要看上去还有光标。

解决方案 »

  1.   

    给这个JtextFeild添加事件监听试试。
      

  2.   

    如果是要接受keylistener的值而不在textfiled里显示的话,就在触发按键的事件里,对textfield进行处理。
    比如,每次在接受完键盘的按键后,textfield调用setText("");
      

  3.   

    请您给个代码看看
    我是这么写的:
    public class KeyAdapterImpl extends KeyAdapter {
       // do something .. .
    }JTextField jf = new JTextField(5);
    jf.addKeyListener(new KeyAdapterImpl());
      

  4.   

    楼主具体想要实现什么功能呢?看得我有点云里雾里的,若是想直接输入就一个jtextarea就可以了,若是想截获键盘按键,那和jtextarea没有关系啊,干吗监听jtextarea的键盘按键呢有些困惑
      

  5.   

    实现keyTyped函数,并且调用keyevent.consume();
      

  6.   

    我确实不知道你这样做的原因,但我想也许你有你的理由吧。
    你要屏蔽键盘输入是非常简单,但是,具体操作起来可就费劲了。
    你可以这样
    f.setActionMap(null);或者field.setInputMap(JComponent.WHEN_FOCUSED, null);
    这样,键盘输入不起作用了。但是使用监听仍然可以捕获键盘事件。
    不过,在处理一些特殊键的时候会比较复杂,比如组合键,delete键。一般不建议将一个控件的所有inputMap和ActionMap都清掉。但是似乎你所说的却又完全是都去掉的样子~~import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JTextField;public class TextFieldTest { public static void main(String args[]) {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JTextField field = new JTextField(20);
    Container c = f.getContentPane();
    c.setLayout(new BorderLayout());
    c.add(field); field.setInputMap(JComponent.WHEN_FOCUSED, null);
    field.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
                                    //这里自己看怎么玩吧
    System.out.println(e.getKeyChar());
    }
    });
    f.pack();
    f.setVisible(true);
    }
    }
      

  7.   

    可是实现了keytyped 后,怎么判断是按下还是释放??
      

  8.   

    如果你说的是键盘的事件。那就在keyPressed和keyReleased方法里进行相应操作。