适应为你的text框,先接受了键盘的输入text.enable(FALSE);
不知道行不行?

解决方案 »

  1.   

    text.enable(flase)在什么时候设置呢?
      

  2.   

    如果你需要的是一个不用输入的textField的话,在new之后设置就行了。
      

  3.   

    class testKeyListener implements java.awt.event.KeyListener{
            int nKeyCode;
            public void keyPressed(KeyEvent e) {//重载事件
                  jTextField1.setText("");        }        public void keyReleased(KeyEvent e) {
                  nKeyCode=e.getKeyCode();
                  jLabel1.setText(""+nKeyCode);        }        public void keyTyped(KeyEvent e) {//测试不到
            }
      }
      

  4.   

    这是我的代码,如果输入Y,在text框中显示为100y 如何不显示y?
    public class InputField
    extends JTextField
    implements KeyListener{ //触发的键盘事件
    private String keyEvent = ""; public InputField() {
    super(); setBackground(Color.WHITE);
    setBorder(null);
    setForeground(Color.BLUE);
    setFont(new Font("宋体", Font.BOLD, 22)); addKeyListener(this);

    inputFieldKeyEvent = new InputFieldKeyEvent();
    //初始化不可用功能键
    keyData = new KeyData(); requestFocus();
    } public void keyPressed(KeyEvent event) {
    int code = event.getKeyCode();
    if(code<96 || code>105){
    if(code == 89){
    setText("100");
    }
    }
    } public void keyReleased(KeyEvent event) {
    } public void keyTyped(KeyEvent event) {
    } public void focusGained(FocusEvent e) {
    } public void focusLost(FocusEvent e) {
    requestFocus();
    } /**
     * @param string
     */
    public void setContent(String text) {
    super.setText(text);
    }}
      

  5.   

    建议不用textfield,换成label马上解决问题。
    如果一定要用textfield,一是可以text.enable(flase),初始化textfield时设即可。或者通过编程实现按键时对象获得光标焦点。
      

  6.   

    上面说得对象获得焦点是指其他对象,不是你的textfield。
      

  7.   

    用focusLost焦点释放 或者 直接用addActionListener 在Enter时即可变化
      

  8.   

    : foryouever(光速兔子) 
    如果初始化设置为false,那还怎么响应键盘事件呢?
      

  9.   

    那就让别的对象获得焦点吧(做个隐藏的对象,用来获取焦点),100后面那个j是因为当时焦点在你的文本框上,按下j键肯定会显示出来的;或者将就点,用release()
      

  10.   

    //用户输入字母j文本框中显示100
    //程序写得草率,但功能已经达到import java.awt.*;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;
    import javax.swing.text.AbstractDocument;
    import javax.swing.text.AttributeSet;/**
     * <p>Title</p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company: </p>
     * @author TTC
     * @version 1.0
     */public class test extends JFrame
    {
      private XYLayout xYLayout1 = new XYLayout();
      private JTextField jTextField1 = new JTextField();  public test()
      {
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      private void jbInit() throws Exception {
        ///输入检测
        jTextField1.setDocument(new TextCheckableDocument());
        jTextField1.setText("");
        this.getContentPane().setLayout(xYLayout1);
        this.getContentPane().add(jTextField1, new XYConstraints(96, 92, 138, 29));
      }
      public static void main(String[] args)
      {
            (new test()).show();
      }
      /// 关键所在
      public class TextCheckableDocument extends PlainDocument{
        public TextCheckableDocument(){
            super();
        }    public void insertString( int nOffset, String str, AttributeSet attrSet)
            throws BadLocationException{
              if(str!= null && str.equals("j")){
                    super.insertString(nOffset,"100",attrSet);
              }
        }
      }
    }
      

  11.   

    果然不错,多谢了
    不过有个小建议,
    程序里用到的borland的包以后不要用,不通用。
      

  12.   

    能不能使用keycode,
    用上面的方法,没有办法得到其它的键,比如home,insert,ctrl等等,
    如果能得到它们的code,就可以了,有没有办法?