相关疑难解决方法(0)

如何只允许在jTextField中引入数字?

我试图使用此处显示的示例,但java显示错误消息

"无法将AttributeSet解析为类型"

这就是为什么我试图使用另一种只允许数字的方法:

txtUsername.addKeyListener(new MyKeyListener());

public class MyKeyListener extends KeyAdapter{
  public void keyPressed(KeyEvent ke){
      System.out.println("Key pressed code = "+ke.getKeyCode());
      if (ke.getKeyCode()>=48 && ke.getKeyCode()<=57)
              return true;
      else
              return false;
  }
} 
Run Code Online (Sandbox Code Playgroud)

但当然它不起作用,因为keyPressed方法是void.那么,为了在textfield中只打印数字怎么办?

java swing digits restriction jtextfield

11
推荐指数
2
解决办法
3万
查看次数

JTextField,使用文档过滤器过滤整数和句点

编辑 - 在帖子的最后添加了我们能够实现的答案

这是我在SO的第一篇文章,所以我希望我可以问一切正确!

尽管发布了类似的问题,我搜索并没有找到我的问题的答案,所以我希望这不是转贴.

这就是ai得到的,一个JTextField用于接收用户输入的小应用程序,除此之外我还有一个DocumentFilter用户只能输入整数和句点以便接收代表重量的值.

我的问题是,我的DocumentFilter我无法过滤"复制粘贴"文本,我无法过滤选定的文本删除.

这是Filter的代码

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

/**
* The Class IntAndDotFilter.
*/
public class IntAndDotFilter extends DocumentFilter {

/** The period counter. */
private int periodCounter = 0;

/** The number counter. */
private int numberCounter = 0;

private boolean canRemove = true;

public void setCanRemove(boolean canRemove) {
    this.canRemove = canRemove;
}

@Override
public void replace(FilterBypass fb, int offset, int length, String text,
        AttributeSet attrs) throws …
Run Code Online (Sandbox Code Playgroud)

java swing jtextfield documentfilter

5
推荐指数
1
解决办法
9499
查看次数

标签 统计

java ×2

jtextfield ×2

swing ×2

digits ×1

documentfilter ×1

restriction ×1