在标准java程序中如何限制一个文本框只能输入数字?

blackweer 2003-08-02 05:21:08
JDK1.4.2,JTextField控件如何限制输入的内容和长度?
谢谢!
...全文
1167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackweer 2003-08-04
  • 打赏
  • 举报
回复
老大,我是新来的,该怎么付你账?
谢谢你帮我解决了这个问题。
非常感谢!
shine333 2003-08-03
  • 打赏
  • 举报
回复
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());
}
}
stonegump 2003-08-03
  • 打赏
  • 举报
回复
javax.swing.JFormattedTextField
popularboy1wbr 2003-08-02
  • 打赏
  • 举报
回复
好像JTextFile有一些专门的子类,你查查看
没有只能加监厅函数了
blackweer 2003-08-02
  • 打赏
  • 举报
回复
java编程思想上哪儿啊?
是第二版上吗?
chensuper 2003-08-02
  • 打赏
  • 举报
回复
java编程思想上不是有例子吗,那个例子很好,可以模仿一下!
whyxx 2003-08-02
  • 打赏
  • 举报
回复
给jtextfield加监听事件,判断输入内容

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧