Java JTextField在写入时转换为大写/小写

Java JTextField在写入时转换为大写/小写,java,string,jtextfield,readline,Java,String,Jtextfield,Readline,我有一个关于在JTextField中键入的问题。我的程序通过几个csv文件进行搜索,并查找JTextField字符串中指定的内容。我已经添加了readLine函数“.toLowerCase”来将所有字符串读取为小写。在写入JTextField时,是否可以将JTextField设置为自动将大写转换为小写? 如果(line.toLowerCase().contains(searchedString))。。。 您可以通过扩展JTextfield和重写构造函数/setter方法来创建自己的类 您可以通

我有一个关于在JTextField中键入的问题。我的程序通过几个csv文件进行搜索,并查找JTextField字符串中指定的内容。我已经添加了readLine函数“.toLowerCase”来将所有字符串读取为小写。在写入JTextField时,是否可以将JTextField设置为自动将大写转换为小写?

如果(line.toLowerCase().contains(searchedString))。。。

您可以通过扩展JTextfield和重写构造函数/setter方法来创建自己的类

您可以通过扩展JTextfield和重写构造函数/setter方法来创建自己的类

是的,您可以使用KeyListener,当在文本字段中按下一个键时,您将使输入字符串小写,同时保持光标位置不变。如下面的代码所示:

jTextField1.addKeyListener(new KeyListener() {
    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent e) {
        int pos = jTextField1.getCaretPosition();
        jTextField1.setText(jTextField1.getText().toLowerCase());
        jTextField1.setCaretPosition(pos);
    }
});
资料来源:


是的,您可以使用KeyListener,当在文本字段中按下一个键时,您将使输入字符串小写,同时保持光标位置不变。如下面的代码所示:

jTextField1.addKeyListener(new KeyListener() {
    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent e) {
        int pos = jTextField1.getCaretPosition();
        jTextField1.setText(jTextField1.getText().toLowerCase());
        jTextField1.setCaretPosition(pos);
    }
});
资料来源:


您可以创建一个扩展类和重写方法的类,以便:

  • 在insertString方法中,它将调用它的super,传入一个参数
    string.toLowerCase()
  • 在replace方法中,它将调用它的super,传入一个参数
    text.toLowerCase()
然后添加此类的实例,以便JTextField将自动转换为小写:

class Main {
    public static void main(String[]args) {
        JFrame jFrame = new JFrame("Example");
        jFrame.setSize(500, 500);
        jFrame.setVisible(true);
        JPanel jPanel = new JPanel();
        jFrame.add(jPanel);
        JTextField jTextField = new JTextField("Example JTextField");
        ((AbstractDocument)jTextField.getDocument()).setDocumentFilter(new LowerCaseDocumentFilter());
        jPanel.add(jTextField);
        jFrame.pack();
    }
}
资料来源:

您可以创建一个扩展类和重写方法的类,以便:

  • 在insertString方法中,它将调用它的super,传入一个参数
    string.toLowerCase()
  • 在replace方法中,它将调用它的super,传入一个参数
    text.toLowerCase()
然后添加此类的实例,以便JTextField将自动转换为小写:

class Main {
    public static void main(String[]args) {
        JFrame jFrame = new JFrame("Example");
        jFrame.setSize(500, 500);
        jFrame.setVisible(true);
        JPanel jPanel = new JPanel();
        jFrame.add(jPanel);
        JTextField jTextField = new JTextField("Example JTextField");
        ((AbstractDocument)jTextField.getDocument()).setDocumentFilter(new LowerCaseDocumentFilter());
        jPanel.add(jTextField);
        jFrame.pack();
    }
}
资料来源:

工作完美!这就是我要找的。谢谢。您可以使用
KeyAdapter
而不是
keylister
来节省一些代码。它不提供方法的op版本,因此您只需要实现
keyreased
。还要注意,这只适用于键。其他输入方法(如剪切和粘贴)将不会使用小写。工作完美!这就是我要找的。谢谢。您可以使用
KeyAdapter
而不是
keylister
来节省一些代码。它不提供方法的op版本,因此您只需要实现
keyreased
。还要注意,这只适用于键。其他输入方法(如剪切和粘贴)不会使用小写。