import java.awt.event.*;
import java.util.*;public class myKeyMouse implements KeyListener, MouseListener{  private transient Vector keyListeners;
  private transient Vector mouseListeners;  public synchronized void removeKeyListener(KeyListener l) {
    if (keyListeners != null && keyListeners.contains(l)) {
      Vector v = (Vector) keyListeners.clone();
      v.removeElement(l);
      keyListeners = v;
    }
  }
  public synchronized void addKeyListener(KeyListener l) {
    Vector v = keyListeners == null ? new Vector(2) : (Vector) keyListeners.clone();
    if (!v.contains(l)) {
      v.addElement(l);
      keyListeners = v;
    }
  }
  protected void fireKeyTyped(KeyEvent e) {
    if (keyListeners != null) {
      Vector listeners = keyListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((KeyListener) listeners.elementAt(i)).keyTyped(e);
      }
    }
  }
  protected void fireKeyPressed(KeyEvent e) {
    if (keyListeners != null) {
      Vector listeners = keyListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((KeyListener) listeners.elementAt(i)).keyPressed(e);
      }
    }
  }
  protected void fireKeyReleased(KeyEvent e) {
    if (keyListeners != null) {
      Vector listeners = keyListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((KeyListener) listeners.elementAt(i)).keyReleased(e);
      }
    }
  }
  public void keyTyped(KeyEvent e) {
  }
  public void keyPressed(KeyEvent e) {
  }
  public void keyReleased(KeyEvent e) {
  }
  public synchronized void removeMouseListener(MouseListener l) {
    if (mouseListeners != null && mouseListeners.contains(l)) {
      Vector v = (Vector) mouseListeners.clone();
      v.removeElement(l);
      mouseListeners = v;
    }
  }
  public synchronized void addMouseListener(MouseListener l) {
    Vector v = mouseListeners == null ? new Vector(2) : (Vector) mouseListeners.clone();
    if (!v.contains(l)) {
      v.addElement(l);
      mouseListeners = v;
    }
  }
  protected void fireMouseClicked(MouseEvent e) {
    if (mouseListeners != null) {
      Vector listeners = mouseListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((MouseListener) listeners.elementAt(i)).mouseClicked(e);
      }
    }
  }
  protected void fireMousePressed(MouseEvent e) {
    if (mouseListeners != null) {
      Vector listeners = mouseListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((MouseListener) listeners.elementAt(i)).mousePressed(e);
      }
    }
  }
  protected void fireMouseReleased(MouseEvent e) {
    if (mouseListeners != null) {
      Vector listeners = mouseListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((MouseListener) listeners.elementAt(i)).mouseReleased(e);
      }
    }
  }
  protected void fireMouseEntered(MouseEvent e) {
    if (mouseListeners != null) {
      Vector listeners = mouseListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((MouseListener) listeners.elementAt(i)).mouseEntered(e);
      }
    }
  }
  protected void fireMouseExited(MouseEvent e) {
    if (mouseListeners != null) {
      Vector listeners = mouseListeners;
      int count = listeners.size();
      for (int i = 0; i < count; i++) {
        ((MouseListener) listeners.elementAt(i)).mouseExited(e);
      }
    }
  }
  public void mouseClicked(MouseEvent e) {
  }
  public void mousePressed(MouseEvent e) {
  }
  public void mouseReleased(MouseEvent e) {
  }
  public void mouseEntered(MouseEvent e) {
  }
  public void mouseExited(MouseEvent e) {
  }
}

解决方案 »

  1.   

    有一个土办法,就是先获取JTextField的内容,然后去掉刚输入的字符,再用setText方法
    还有一个办法就是使用JFormattedTextField,使用Formatter,强制输入大写字母
      

  2.   

    给你一段Key和MouseListener的例子,可以copy直接编译运行。
    本例子的文本框用事件处理后只能输入数字。
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.plaf.metal.*;
    public class KeyTest extends JFrame
    {
    JButton  btn;
    JTextField  txt;
    JLabel      lab;
    public KeyTest()
    {
    setSize(500,300);
    setLocation(150,150); Container con=getContentPane();
    con.setLayout(null); btn=new JButton("点一下");
    btn.setBorder(new EmptyBorder(0,0,0,0));
    //btn.setBorder(new MetalBorders.ButtonBorder());
    //btn.setBorder(new MetalBorders.Flush3DBorder());
    btn.setSize(100,30);
    btn.setLocation(200,150);
    btn.addMouseListener(new BtnEvent()); txt=new JTextField("");
    txt.setSize(400,30);
    txt.setLocation(50,50);
    txt.addKeyListener(new TxtEvent());
    txt.addFocusListener(new TxtFocusEvent()); lab=new JLabel("提示:");
    //lab.setBorder(new SoftBevelBorder(1,Color.red,Color.yellow));
    lab.setSize(490,30);
    lab.setLocation(0,240); con.add(btn);
    con.add(txt);
    con.add(lab); show();
    btn.requestFocus();
    txt.setText("请输入一些字符试一试!");
    } public static void main(String[] args)
    {
    new KeyTest();
    } //接口类
    class BtnEvent implements MouseListener
    {
    public void mouseClicked(MouseEvent e)
    {
    if(e.isMetaDown())
    {
    System.out.println("么他");
    }
    }
    public void mousePressed(MouseEvent e)
    {
    btn.setBorder(new SoftBevelBorder(1));
    }
    public void mouseReleased(MouseEvent e)
    {
    btn.setBorder(new SoftBevelBorder(0));
    }
    public void mouseEntered(MouseEvent e)
    {
    btn.setBorder(new SoftBevelBorder(0));
    lab.setText("提示:你可以点击,看一看按钮的形状!");
    }
    public void mouseExited(MouseEvent e)
    {
    btn.setBorder(new EmptyBorder(0,0,0,0));
    lab.setText("提示:");
    }
    } //键盘事件
    class TxtEvent implements KeyListener
    {
    //当按下键时触发该方法
    public void keyPressed(KeyEvent e)
    {
    if(e.isActionKey())
    {
    System.out.println("回应键");
    }
    if(e.isMetaDown())
    {
    System.out.println("鼠标右键");
    }
    }
    //当松开键时触发该方法
    public void keyReleased(KeyEvent e)
    {
    }
    //上面两个动作产生该动作
    public void keyTyped(KeyEvent e)
    {
    if((e.getKeyChar()>57) || (e.getKeyChar()<48))
    {
    lab.setText("提示:你只能输入数字!");
    e.setKeyChar((char)0);
    }
    else
    {
    lab.setText("提示:输入正确!");
    }
    }
    }
    class TxtFocusEvent implements FocusListener
    {
    public void focusGained(FocusEvent event)
    {
    txt.setText("");
    txt.setBackground(new Color(20,125,200));
    }
    public void focusLost(FocusEvent event)
    {
    txt.setBackground(Color.white);
    }
    }
    }