gpt4 book ai didi

java - 在 JFormattedTextField 中实现正则表达式

转载 作者:行者123 更新时间:2023-11-29 03:04:23 25 4
gpt4 key购买 nike

我想在 jFormattedTextField 中使用正则表达式模式(或者如果可能的话在 JTextField 中使用,是否完成工作并不重要)。我知道使用 MaskFormatter 和 DocumentFilter,但我想知道是否可以使用正则表达式模式。

这是我试过的代码:

import java.awt.GridLayout;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

public class Test1 {
public static void main(String args[]) {
JFrame frame = new JFrame();
String regex = "[a-z]";
Pattern pt = Pattern.compile(regex);
Matcher r = pt.matcher("(.*)([a-z])");
JFormattedTextField ft = new JFormattedTextField(pt);

JTextField testField = new JTextField();
ft.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) {
if (!r.find()) {
testField.setText("not found");
} else
testField.setText("found");
}
});
frame.setLayout(new GridLayout(2, 1));
frame.add(ft);
frame.add(testField);
frame.pack();
frame.setVisible(true);
}
}

但它不起作用(一直显示“未找到”)。有什么办法可以做到这一点?因为我已经练习了一段时间,所以使用正则表达式感觉更舒服。

最佳答案

我不确定您为什么要在模式中搜索匹配项,您是否正在尝试执行以下操作?

import java.awt.GridLayout;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

public class Test1 {

public static void main(String args[]) {
JFrame frame = new JFrame();
String regex = "[a-z]";
Pattern pt = Pattern.compile(regex);
JFormattedTextField ft = new JFormattedTextField(pt);

JTextField testField = new JTextField();
ft.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) {

Matcher r = pt.matcher(ft.getText());
if (!r.find()) {
testField.setText("not found");
} else
testField.setText("found");
}
});
frame.setLayout(new GridLayout(2, 1));
frame.add(ft);
frame.add(testField);
frame.pack();
frame.setVisible(true);
}

}

关于java - 在 JFormattedTextField 中实现正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com