`
tuxq5721
  • 浏览: 34668 次
社区版块
存档分类
最新评论

Swing —— 扩展PlainDocument限制JTextField只能输入字母与数字

阅读更多

下面是示例代码: 

[复制源代码]

publicclass PlainDocumentFilter extends PlainDocument{

public final staticchar[] ALPHA_CHARS = {

'A', 'B', 'C', 'D', 'E','F', 'G', 'H', 'I', 'J','K', 'L', 'M',

'N', 'O', 'P', 'Q', 'R','S', 'T', 'U', 'V', 'W','X', 'Y', 'Z',

'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j','k', 'l', 'm',

'n', 'o', 'p', 'q', 'r','s', 't', 'u', 'v', 'w','x', 'y', 'z'

};

public final staticchar[] NUMERIC_CHARS = {

'0', '1', '2', '3', '4','5', '6', '7', '8','9'

};

public final staticchar[] ALPHA_NUMERIC_CHARS =

ArrayUtils.addAll(ALPHA_CHARS,NUMERIC_CHARS);

private char[] acceptedChars;

public PlainDocumentFilter() {

this(ALPHA_NUMERIC_CHARS);

}

public PlainDocumentFilter(char[] acceptedChars) {

this.acceptedChars = acceptedChars;

}

@Override

public void insertString(int offs, String str, AttributeSet a)

throws BadLocationException {

//遍历String中所有字节,判断是否有包含不允许的字符出现

for (int i = 0, len = str.length(); i < len; i++) {

if(!ArrayUtils.contains(acceptedChars, str.charAt(i))){

return;

}

}

super.insertString(offs, str, a);

}

public static void main(String[] args) {

JTextField textField = new JTextField();

textField.setDocument(new PlainDocumentFilter());

JFrame frame = new JFrame();

frame.add(textField);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.pack();

frame.setVisible(true);

}

}

分享到:
评论
1 楼 jianghongh 2015-10-10  
在存在输入法的情况下,offs值存在问题,这个要怎么解决?

相关推荐

    JTextField限制最大数字.txt

    通过以上分析,我们可以看到如何通过自定义`Document`类来实现对`JTextField`的输入限制,以及如何通过扩展`JTextField`来添加额外的功能,如鼠标滚轮控制。这种方法不仅可以应用于限制数字输入的情况,还可以根据...

    控制JTextField的输入

    以下是一个简单的`DocumentFilter`示例,它限制了`JTextField`只能输入数字: ```java public class NumberDocumentFilter extends DocumentFilter { @Override public void insertString(FilterBypass fb, int ...

    JTextField输入时实现位数监听

    这种机制不仅可以防止用户输入过长的文本,还可以用于实现各种输入验证,例如只允许数字输入、字母输入或者特定格式的文本等。 在实际项目中,我们可能还需要考虑其他因素,如输入的实时反馈(如高亮显示错误)、...

    Swing输入框监听

    //建立监听 FrameListener fl = new FrameListener(jb,tf,pw); //tf.addActionListener(fl); tf.addKeyListener(fl); //窗口可见 this.setVisible(true); //关闭窗口时退出程序 this....

    java实验报告———JavaSwing编程.pdf

    3. JTextField是Swing库中的文本字段组件,允许用户输入一行文本。它通常用于文本输入、编辑或显示信息。JTextField可以设置各种属性,例如字体、颜色和大小。 4. OCR(光学字符识别)技术用于将扫描或照片中的打印...

    JFC SWING—JAVA 基础类组件集

    JTextField 用于输入单行文本,可以限制输入字符的数量或类型。JTable 可以显示二维数据,支持排序、选择和编辑功能。JScrollPane 则用于在组件过大无法完全显示时提供滚动条。 Swing 还引入了布局管理器,如 ...

    学生练习——Java Swing开发的小计算器

    Java Swing是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更丰富的组件和更好的可定制性。在这个"学生练习——Java Swing开发的小计算器"项目中,学生利用...

    Java Swing中的文本框(JTextField)与文本区(JTextArea)使用实例

    在Java Swing中,文本框(JTextField)和文本区(JTextArea)是两个常见的组件,用于接收用户的文本输入。它们是构建用户界面的重要元素,通常用于数据输入或者多行文本展示。 一、JTextField(文本框)的使用 1. 构造...

    基于Swing的IP地址输入控件

    "支持只能输入"指的是控件可能有额外的验证机制,确保用户只能输入有效的IP地址字符,即数字0-9和点号'.',并限制点号的数量和位置,以符合IP地址的标准格式。 标签"IPAddress Document insertString remove"进一步...

    JAVA SWING 日期控件(目前支持JLable和JTextField,若有需要可自行扩展其它控件)

    3. **扩展性**:这个日期控件的设计考虑到了扩展性,意味着它不仅限于JLabel和JTextField,可以通过修改或增加代码,使其支持JComboBox、JButton等其他Swing组件,这样可以适应更多类型的用户界面需求。 4. **源码...

    原创:java封装了的JTextField,可以达到google输入框的效果

    Java中的`JTextField`是Swing库中一个基础的组件,用于创建文本输入字段。它允许用户输入单行文本,并且通常与`Document`对象关联,`Document`管理`JTextField`中的数据。在标准的`JTextField`中,虽然没有内置的...

    Swing组件应用实例

    Swing组件是Java GUI(图形用户界面)编程中的核心元素,它是Java Foundation Classes (JFC) 的一部分。Swing提供了一系列丰富的组件,用于构建...记得动手实践,理论与实践相结合,才能更好地掌握Swing组件的应用。

    弹窗辅助输入JTextField

    在Java Swing应用开发中,有时候我们需要提供一种更加用户友好的输入方式,比如在输入框(JTextField)中输入内容时,能实时根据已输入的字符给出匹配建议,以辅助用户快速选择目标信息。这种功能常见于订机票时输入...

    IP地址格式输入文本框

    在Java中,一个自定义的文本输入框通常会继承自`javax.swing.JTextField`,并添加额外的验证和处理逻辑。在这个类中,可能会定义一个监听器,当用户输入或粘贴IP地址时,检查输入的格式是否合法,如确保每个段的数字...

    java swing文本框(密码框)没有内容时,占位显示默认信息(仿IOS)

    `JTextField`是一个单行文本输入框,用户可以在其中输入任意字符。`JPasswordField`则用于隐藏输入的字符,通常用于输入密码,显示为星号或圆点。 实现自定义的占位符功能,我们可以按照以下步骤进行: 1. **创建...

    可以输入数字的小应用程序图形用户界面

    【标题】: "可以输入数字的小应用程序图形用户界面" 是一个基于Java的编程实践,它设计了一个GUI(图形用户界面)来允许用户输入数字。在计算机科学中,GUI是用户与软件交互的主要方式,提供了直观的按钮、文本框、...

    java JTextField组件的使用

    例如,限制只能输入数字: ```java Document doc = textField.getDocument(); doc.addDocumentListener(new DocumentListener() {...}); ``` 7. **样式定制** 可以通过`setFont()`改变字体,`setForeground()`...

    JAVA SWING图形界面程序设计实验报告(附完整代码).pdf

    1. **容器与组件**:在Swing中,`JFrame`是顶级容器,用于创建窗口。`JLabel`, `JTextField`, 和 `JButton` 是常用的组件。`JLabel` 用于显示文本或图像,`JTextField` 提供用户输入字段,而`JButton` 则用于定义可...

    Java.Swing图形界面开发与案例详解.王鹏等——第5章

    王鹏等——第5章"中,读者将学习到如何创建一个完整的Swing应用程序,从设置主窗口到添加组件,再到处理用户输入和响应事件。书中可能包含了以下实例: 1. 创建简单的Hello, World!程序,展示如何建立一个包含...

Global site tag (gtag.js) - Google Analytics