java:判断在JTextField中输入的是不是是7位数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:判断在JTextField中输入的是不是是7位数字相关的知识,希望对你有一定的参考价值。
textField_1=newJTextField();
// 方法1
if(textField_1.getText().length()!=7&&textField_1.getText().matches("\\d*"))
JOptionPane.showMessageDialog(null,"请输入7位数字",
null, JOptionPane.ERROR_MESSAGE);
// 方法2
public boolean isSevenDigits(String str)
if(str.length()!=7)
return false;
if(Pattern.compile("[0-9]*").matcher(str).matches())
return false;
/*或者
for (inti = 0; i < str.length(); i++)
if (!Character.isDigit(str.charAt(i)))
return false;
*/
return true;
尝试以上方法,都未成功,请问是何原因?
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class JTFDemo extends JFrame
public static void main(String[] args)
new JTFDemo();
public JTFDemo()
this.setSize(600, 450);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initPanel();
this.setVisible(true);
private void initPanel()
this.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 40));
final JTextField textField = new JTextField(20);
JButton button = new JButton("提交");
button.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
if (textField.getText().matches("\\\\d7"))
showMessage("输入正确,你的输入是" + textField.getText());
else
showMessage("请输入7位数字");
private void showMessage(String message)
JOptionPane.showMessageDialog(getRootPane(), message);
);
add(textField);
add(button);
给你做参考。
if(!Pattern.matches(regx,textField_1.getText()))JOptionPane.showMessageDialog(null,"请输入7位数字",
null, JOptionPane.ERROR_MESSAGE);;不就行了?? 参考技术B 方法1逻辑有问题,应该是长度不为7或者字符串不匹配\\d*,修改方法为if(textField_1.getText().length()!=7||!textField_1.getText().matches("\\d*"));
方法2匹配正则表达式的条件返回false,应该修改为不匹配正则表达式返回false,修改方法为if(!Pattern.compile("[0-9]*").matcher(str).matches())。
附:正则表达式^[0-9]7$表示长度为7的以0-9开始、以0-9结束的字符串。追问
谢谢您的讲解!
参考技术C 建议用正则把内容变为char数组Java - 检查 JTextField 是不是为空
【中文标题】Java - 检查 JTextField 是不是为空【英文标题】:Java - Check if JTextField is empty or notJava - 检查 JTextField 是否为空 【发布时间】:2013-06-12 12:25:13 【问题描述】:所以我知道这是一个受欢迎的问题,并且已经找到了解决方案。但是当我尝试这个时它不能正常工作。
我的 JTextField 为空且按钮未启用。当我在我的文本字段中写一些东西时,按钮没有被启用。
所以我的程序应该每秒检查这个字段是否为空。只要有人在文本字段中写入内容,就应该启用该按钮。^^
loginbt = new JButton("Login");
loginbt.addActionListener(new loginHandler());
add(loginbt);
if(name.getText().equals(""))
loginbt.setEnabled(false);
else
loginbt.setEnabled(true);
【问题讨论】:
顺便说一句,我会用loginbt.setEnabled(name.getText().length()!=0);
【参考方案1】:
为此,您需要为您的JTextField
添加更改侦听器(一个DocumentListener
,它对文本中的更改做出反应),在actionPerformed()
内,您需要将loginButton
更新为启用/禁用,具体取决于JTextfield
是否为空。
以下是我从这个thread 中找到的。
yourJTextField.getDocument().addDocumentListener(new DocumentListener()
public void changedUpdate(DocumentEvent e)
changed();
public void removeUpdate(DocumentEvent e)
changed();
public void insertUpdate(DocumentEvent e)
changed();
public void changed()
if (yourJTextField.getText().equals(""))
loginButton.setEnabled(false);
else
loginButton.setEnabled(true);
);
【讨论】:
我想问一下如果按钮依赖于多个文本字段,程序是否会改变。我会使用相同的逻辑来定义操作,还是有其他方法可以使用更少的代码?感谢您的宝贵时间! 然后创建一个DocumentListener
实现来处理该按钮并将它们作为侦听器添加到所有文本框?
是的..谢谢..忘记了基本的东西:how to write document listener【参考方案2】:
如果 JTextField“名称”不包含文本,则以下将返回 true:
name.getText().isEmpty
【讨论】:
【参考方案3】:你需要的是一个叫做 Document Listener 的东西。见How to Write a Document Listener。
【讨论】:
【参考方案4】:检查 JTextFiled 是否为空条件:
if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0))
【讨论】:
不错。我喜欢这个。【参考方案5】:好吧,渲染按钮启用/禁用的代码:
if(name.getText().equals(""))
loginbt.setEnabled(false);
else
loginbt.setEnabled(true);
必须以javax.swing.event.ChangeListener
书写并附加到字段中(请参阅here)。字段值的更改应触发侦听器重新评估对象状态。你期待什么?
【讨论】:
【参考方案6】:使用以下代码:
if(name.getText().equals(""))
loginbt.disable();
【讨论】:
【参考方案7】:您可以根据需要使用isEmpty()
或isBlank()
方法。
当且仅当 length() 为 0 时返回 true。
this.name.getText().isEmpty();
如果字符串为空或仅包含空白代码点,则返回 true,否则返回 false
this.name.getText().isBlank();
【讨论】:
【参考方案8】:试试这个
if(name.getText() != null && name.getText().equals(""))
loginbt.setEnabled(false);
else
loginbt.setEnabled(true);
【讨论】:
【参考方案9】:if(name.getText().hashCode() != 0)
JOptionPane.showMessageDialog(null, "not empty");
else
JOptionPane.showMessageDialog(null, "empty");
【讨论】:
冷,请解释一下为什么您认为这是一个解决方案?【参考方案10】:private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
// Submit Button
String Fname = jTextField1.getText();
String Lname = jTextField2.getText();
String Desig = jTextField3.getText();
String Nic = jTextField4.getText();
String Phone = jTextField5.getText();
String Add = jTextArea1.getText();
String Dob = jTextField6.getText();
// String Gender;
// Image
if (Fname.hashCode() == 0 || Lname.hashCode() == 0 || Desig.hashCode() == 0 || Nic.hashCode() == 0 || Phone.hashCode() == 0 || Add.hashCode() == 0)
JOptionPane.showMessageDialog(null, "Some fields are empty!");
else
JOptionPane.showMessageDialog(null, "OK");
【讨论】:
嗨@HarinduLakshan,请考虑添加更多信息以提高答案的质量。【参考方案11】:在您的文本字段中尝试使用 keyListener
jTextField.addKeyListener(new KeyListener()
@Override
public void keyTyped(KeyEvent e)
@Override
public void keyPressed(KeyEvent e)
if (text.getText().length() >= 1)
button.setEnabled(true);
else
button.setEnabled(false);
@Override
public void keyReleased(KeyEvent e)
);
【讨论】:
-1 DocumentListener 是首选方法。很少有理由使用 KeyListener。这是使用 AWT 时的旧设计。此外,代码无论如何都不会工作,因为在生成 keyPressed 事件时没有向 Document 添加任何文本,所以当第一个事件被触发时长度仍然为 0。 感谢指正,以后会看到DocumentListener以上是关于java:判断在JTextField中输入的是不是是7位数字的主要内容,如果未能解决你的问题,请参考以下文章
java.swing JtextField 中怎么限制只能输入数字
请教各位java大神,怎么限制输入框JTextField中只能输入小数和整数,最好能提供详细点的回答(不是web的)。
java中JTextField输入的字符如何进行判断非法输入