如果是控制台: int m; while(true){ try{ m = Integer.parseInt("string"); break; } catch(NumberFormatException e){ System.out.println("Please input a Number"); } } 如果是GUI程序,比如在JTextArea中输入,则可加入一个监听器,来判断文本变化了后的值是否为数字! 这里只列出int类型,其他类型一样的
import java.awt.event.*; import javax.swing.*;public class NumField extends JTextField implements KeyListener{ public NumField(){ addKeyListener(this); }
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()); } }这是你要的只接受数字的文本框, getDouble()什么的在输入框为空时是不起作用的用法:public class Test{ public static void main(String[] args){ JFrame f = new JFrame(); final NumberInputer ni = new NumberInputer(); ni.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.out.println(ni.getDouble()); } }); f.getContentPane().add(ni); f.setSize(200, 60); f.setDefaultCloseOperation(f.DISPOSE_ON_CLOSE); f.show(); } }按回车时可以看到输出
int m;
while(true){
try{
m = Integer.parseInt("string");
break;
}
catch(NumberFormatException e){
System.out.println("Please input a Number");
}
}
如果是GUI程序,比如在JTextArea中输入,则可加入一个监听器,来判断文本变化了后的值是否为数字!
这里只列出int类型,其他类型一样的
import javax.swing.*;public class NumField extends JTextField implements KeyListener{
public NumField(){
addKeyListener(this);
}
public void keyTyped(KeyEvent e){
char keyChar = e.getKeyChar(); //新输入的字符
if(
(keyChar >= '0' && keyChar <= '9') //数字
|| (keyChar == '-' && getCaretPosition() == 0) //在不存在"-"的字符串首输入负号
|| (keyChar == '.' && getText().indexOf(".") == -1) //在没有"."的字符串输入小数点
){
return; //以上是合法的
}
e.consume(); //否则"消费"掉这个事件JTextField不再处理这个新字符
}
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){} public double getDouble() throws NumberFormatException{
return Double.parseDouble(getText());
}
}
return Double.parseDouble(getText());}是什么意思好象没有什么用
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());
}
}这是你要的只接受数字的文本框,
getDouble()什么的在输入框为空时是不起作用的用法:public class Test{
public static void main(String[] args){
JFrame f = new JFrame();
final NumberInputer ni = new NumberInputer();
ni.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(ni.getDouble());
}
});
f.getContentPane().add(ni);
f.setSize(200, 60);
f.setDefaultCloseOperation(f.DISPOSE_ON_CLOSE);
f.show();
}
}按回车时可以看到输出