java swing 怎么设置文本框只能输入数字

 我来答
小傻

2015-11-15 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

java swing中利用JFormattedTextField的控件加keyReleased能实现,以下实现的只能输入数字的文本框代码:

import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
*
* @author Administrator
*/
public class JFormattedText extends JFrame {

   private JFormattedTextField text;

   public JFormattedText() {
       JPanel panel = new JPanel();
       text = new JFormattedTextField(new java.text.DecimalFormat("#0"));
//        text = new JFormattedTextField();
//        text.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0"))));
       text.setFont(new java.awt.Font("宋体", 0, 12)); // NOI18N
       text.setMaximumSize(new java.awt.Dimension(50, 21));
       text.setMinimumSize(new java.awt.Dimension(50, 21));
       text.setPreferredSize(new java.awt.Dimension(50, 21));
       //过滤输入的字符
       text.addKeyListener(new java.awt.event.KeyAdapter() {
           public void keyReleased(java.awt.event.KeyEvent evt) {
               String old = text.getText();
               JFormattedTextField.AbstractFormatter formatter = text.getFormatter();
               if (!old.equals("")) { 
                   if (formatter != null) {
                       String str = text.getText();
                       try {
                           long page = (Long) formatter.stringToValue(str);
                           text.setText(page + "");
                       } catch (ParseException pe) {
                           text.setText("1");//解析异常直接将文本框中值设置为1
                       }
                   }
               }
           }
       });
       panel.add(text);
       this.add(panel);
       this.setBounds(200, 100, 100, 100);
   }

   public static void main(String[] arg) {
       new JFormattedText().setVisible(true);
   }
}
死后是好人
2011-11-14 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:964万
展开全部
要在文本框上加上键盘侦听,如果键值的不是数字键,就不动,这样就实现了
追问
能说一下具体怎么加吗
追答
JTextField text=new JTextField();
text.addKeyListener(new KeyListener(){

@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
text.setText(text.getText().replaceAll("^[0-9]", ""));
}

JTextField的声明注意要放到构造器外作为全局变量,不然在public void keyPressed方法内引用会报错
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友00a90b4
2011-11-14 · TA获得超过239个赞
知道小有建树答主
回答量:455
采纳率:75%
帮助的人:176万
展开全部
可以使用javax.swing.JFormattedTextField控件,里面可以设置内容格式等。
追问
哪个方法啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式