当前位置: 首页 > 知识库问答 >
问题:

java强制JTextField仅为大写

燕正德
2023-03-14

有没有一种方法可以强制JTextField中的所有用户输入在Java中都是大写的?

共有3个答案

宰父淳
2023-03-14

下面是DocumentFilter的一个示例。

AbstractDocument document = (AbstractDocument) textfield
                .getDocument();
        document.setDocumentFilter(new DocumentFilter() {
            @Override
            public void insertString(FilterBypass fb, int offset,
                    String string, AttributeSet attr)
                    throws BadLocationException {
                super.insertString(fb, offset, string.toUpperCase(), attr);
            }

            @Override
            public void replace(FilterBypass fb, int offset, int length,
                    String text, AttributeSet attrs)
                    throws BadLocationException {
                super.insertString(fb, offset, text.toUpperCase(), attrs);
            }

        });
王刚毅
2023-03-14

你有两个直接的选择。您可以提供自己的文档,这是一点点工作,或提供自己的DocumentFilter

或者,你只要谷歌一下,看看你发现了什么,比如http://www.java2s.com/Code/Java/Swing-JFC/DocumentFilterthatmapslowercaseletterstouppercase.htm例如:)

白浩气
2023-03-14

一个完整的工作示例可能会对您有所帮助

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class UpperCasedTextFieldTester extends JFrame {
    /** */
    private static final long serialVersionUID = -4767854098431909437L;

    public UpperCasedTextFieldTester(){
        setSize(200, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout(FlowLayout.LEFT));

        DocumentFilter filter = new UppercaseDocumentFilter();

        JTextField firstName = new JTextField();
        firstName.setPreferredSize(new Dimension(100, 20));
        ((AbstractDocument) firstName.getDocument()).setDocumentFilter(filter);

        JTextField lastName = new JTextField();
        lastName.setPreferredSize(new Dimension(100, 20));
        ((AbstractDocument) lastName.getDocument()).setDocumentFilter(filter);

        add(firstName);
        add(lastName);
    }

    public static void main(String[] args) {
        new UpperCasedTextFieldTester().setVisible(true);
    }

}

class UppercaseDocumentFilter extends DocumentFilter {
    public void insertString(DocumentFilter.FilterBypass fb, int offset,
            String text, AttributeSet attr) throws BadLocationException {

        fb.insertString(offset, text.toUpperCase(), attr);
    }

    public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
            String text, AttributeSet attrs) throws BadLocationException {

        fb.replace(offset, length, text.toUpperCase(), attrs);
    }
}
 类似资料:
  • 问题内容: 我想创建JTextField,输入字符限于“ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789 +&@#/%?=〜_- |!:,。;”之类的输入字符。所以我尝试覆盖 但这不是我想要的,因为用户无法再按ctrl-c ctrl-v ctrl-x …所以我添加了 到if条件,但现在用户可以粘贴不适当的输入,即’(’

  • 问题内容: 我知道这个问题一定已经被提出并回答了一百万遍了,但是我找不到一个简单的解决方案。我有一个JTextField,它只接受正整数作为输入。我需要一种方法来确保此处没有其他输入。 我已经有一个附加到此控件。删除此侦听器在那里要处理的其他代码,我得到了: 如你所见,我正在尝试使用来检查刚刚按下的键是否在整数范围内。这似乎有效。但是我想做的就是,如果该条目不在此范围内,则只需忽略该条目。该代码本

  • 我正在开发一个Java应用程序,遇到了一个我自己似乎无法解决的问题。 我在上设置了,只允许数字输入,但是默认值是文本。我有一个按钮,可以将s重置为默认值,但由于的原因,它无法正常工作。 我怎样才能克服这个问题? 谢啦

  • 我有关于在JTextField打字的问题。我的程序搜索通过几个csv文件和寻找指定的JTextField字符串。我有添加到readLine函数". toLowerCase"读取所有字符串作为小写。在写入JTextField时,是否可以将JTextField设置为自动将大写转换为小写? if(line.toLowerCase()。包含(searchedString))

  • 主要内容:1 Java JTextField的介绍,2 Java JTextField的声明,3 Java JTextField的构造方法,4 Java JTextField的方法,5 Java JTextField的案例1,6 Java JTextField的案例21 Java JTextField的介绍 JTextField类的对象是一个文本组件,允许编辑单行文本。它继承了JTextComponent类。 2 Java JTextField的声明 我们来看一下javax.swing.JTex

  • 问题内容: 无论计算机上设置的时区如何,我都需要对GMT / UTC进行任何与时间相关的操作。在代码中有任何方便的方法吗? 为了明确起见,我将所有操作都使用数据库服务器时间,但是它是根据本地时区格式化的。 谢谢! 问题答案: OP回答了这个问题,以更改正在运行的JVM的单个实例的默认时区,并设置系统属性: 如果从数据库检索Date / Time / Timestamp对象时需要设置特定的时区,请使