给jtextfield加监听事件,判断输入内容

解决方案 »

  1.   

    java编程思想上不是有例子吗,那个例子很好,可以模仿一下!
      

  2.   

    java编程思想上哪儿啊?
    是第二版上吗?
      

  3.   

    好像JTextFile有一些专门的子类,你查查看
    没有只能加监厅函数了
      

  4.   

    Numbers Only
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.event.*;
    import java.awt.*;public class NumberInputer extends JTextField implements KeyListener, MouseWheelListener{
    double stepSize = 1;
    Toolkit toolkit = Toolkit.getDefaultToolkit();

    public NumberInputer(){
    Keymap keymap = getKeymap();
    keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0),
    new AbstractAction(){
    public void actionPerformed(ActionEvent e){
    nextStep();
    }
    });
    keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0),
    new AbstractAction(){
    public void actionPerformed(ActionEvent e){
    previousStep();
    }
    });
    addKeyListener(this);
    addMouseWheelListener(this);
    setHorizontalAlignment(RIGHT);
    }

    public void paste(){
    //Ctrl-V not allowed here to prevent illegal inputs.
    }

    public void keyTyped(KeyEvent e){
    char keyChar = e.getKeyChar();
    if((keyChar >= '0' && keyChar <= '9') //Digits
    || (keyChar == '-' && getCaretPosition() == 0 && getText().indexOf("-") == -1) //Sign
    || (keyChar == '.' && getText().indexOf(".") == -1) //Radix point
    || (keyChar == '\b') //Backspace
    ){
    return;
    }

    toolkit.beep();
    e.consume(); //Stop the illegal inputs from being added to the text field.
    }

    public void keyPressed(KeyEvent e){}

    public void keyReleased(KeyEvent e){}

    public void mouseWheelMoved(MouseWheelEvent e){
    if(e.getWheelRotation() < 0){
    nextStep();
    }else{
    previousStep();
    }
    } public double getStepSize(){
    return stepSize;
    }

    public void setStepSize(double s){
    stepSize = s;
    }

    public void nextStep(){
    try{
    double value = getDouble();
    String newText = String.valueOf(value + stepSize);
    setText(((int) value == value) ? newText.substring(0, newText.indexOf(".")) : newText);
    }catch(NumberFormatException e){}
    }

    public void previousStep(){
    try{
    double value = getDouble();
    String newText = String.valueOf(value - stepSize);
    setText(((int) value == value) ? newText.substring(0, newText.indexOf(".")) : newText);
    }catch(NumberFormatException e){}
    }

    public double getDouble() throws NumberFormatException{
    return Double.parseDouble(getText());
    }

    public float getFloat() throws NumberFormatException{
    return Float.parseFloat(getText());
    }

    public int getInt() throws NumberFormatException{
    return Integer.parseInt(getText());
    }

    public long getLong() throws NumberFormatException{
    return Long.parseLong(getText());
    }
    }