您的位置:首页 > 编程语言 > Java开发

【Java】 JTextField文本框实时监控

2016-03-31 16:43 651 查看
最近在做课程设计,有遇到一个想法,就是在JTextField文本框输入数据的时候实时判断这个数据在数据库中能不能找到对应的记录。

如果有显示在屏幕上,没有的话不显示信息。

查阅API后得知需要JTextField中的getDocument()函数,为这个方法添加文本监听器addDocumentListener,这个监听器下有三个自动写好的方法insertUpdate(),removeUpdate(),changedUpdate(),分别能够实现插入更新、删除更新、更改文本的监听。

由于JTextField中的文本只限于上述这三种形式的改变,因此通过getDocument()方法再增添此种监听器可以实现JTextField文本框输入数据的实时判断功能。

以下列出代码举例。

textField_1.getDocument().addDocumentListener (new DocumentListener() {

@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub

ResultSet rs = new DBOperation().dbope("select 类型 from 利率单 where 编号='"+textField_1.getText().trim()+"'");
try {

if(rs.next()) {
textArea_1_show.setText(rs.getString(1));
}
else {
textArea_1_show.setText("");
}

} catch (SQLException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
textArea_1_show.setText("编号有误");
}

}

@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub

ResultSet rs = new DBOperation().dbope("select 类型 from 利率单 where 编号='"+textField_1.getText().trim()+"'");
try {

if(rs.next()) {
textArea_1_show.setText(rs.getString(1));
}
else {
textArea_1_show.setText("");
}

} catch (SQLException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
textArea_1_show.setText("编号有误");
}

}

@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub

ResultSet rs = new DBOperation().dbope("select 类型 from 利率单 where 编号='"+textField_1.getText().trim()+"'"); //数据库连接,SQL语句实参传入形参str执行dbope(String str)方法.
try {

if(rs.next()) {
textArea_1_show.setText(rs.getString(1));
}
else {
textArea_1_show.setText("");
}

} catch (SQLException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
textArea_1_show.setText("编号有误");
}

}

});


以上代码实现实时监控(JTextField)textField_1中的文本,连接数据库查询是否存在该文本输入的数据作为编号在利率单中所对应的类型。若存在该类型则在下面的JTextArea中输出,否则显示为空。



运行结果如上。Eclipse-Java Mars、JDK1.8实测通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: