我在程序中使用搜索TextField和搜索按钮
searchTxt = new TextField();
searchTxt.setWidth("400px");
search = new Button("Search");
search.setImmediate(true);
search.addListener((Button.ClickListener) this);
public void buttonClick(ClickEvent event) {
final Button button = event.getButton();
if (button == search) {
String searchText = (String) searchTxt.getValue();
searchText = searchText.trim();
if (!searchText.equals(GlobalConstants.EMPTY_STRING) && searchText != null)
{
// logic
}
}
}
我应该从性能的角度来看这个逻辑?
答案 0 :(得分:1)
首先,您不应过多关心GUI事件处理代码中的性能。如果您遇到性能问题,很可能不会出现在用户输入验证代码中。
因此,在编写应用程序时,您的重点应放在可维护性和可读性上。当您使用内置框架功能时,您将获得最佳效果。因此,假设通过'检查输入的文本是否只包含字母数字字符'你的意思是'验证......'你可以使用Vaadin的验证器,更具体地说是RegexpValidator。您的代码看起来像
searchTxt = new TextField();
// match at least one or more alphanumeric characters
searchTxt.addValidator(new RegexpValidator("\\w+", true, "Error msg: not valid..."));
public void buttonClick(ClickEvent event) {
final Button button = event.getButton();
if (button == search) {
if (searchTxt.isValid()) {
// logic
}
}
}
这样,只有在用户输入了至少一个字母数字字符时才会执行逻辑。
答案 1 :(得分:0)
你可以这样做:
1.检查String的长度是否为1
2.如果是,请使用charAt()
String
方法将字符置于零位置
3.然后使用Character.isAlphabetic()
或Character.isDigit()
进行验证。
另一种选择是使用RegEx
,这会大大减少您的代码行数,但会增加您的学习曲线。