Java 正在搜索但不需要按钮,JFrame
我有一个JFrame,其中有一个表和一个已连接到数据库的搜索。 我想搜索,但不需要按钮。所以,当我开始在textfield中填写姓名时,搜索就会完成。 就像html中的ajax一样。Java 正在搜索但不需要按钮,JFrame,java,database,swing,autocomplete,jframe,Java,Database,Swing,Autocomplete,Jframe,我有一个JFrame,其中有一个表和一个已连接到数据库的搜索。 我想搜索,但不需要按钮。所以,当我开始在textfield中填写姓名时,搜索就会完成。 就像html中的ajax一样。 这可以在java中完成吗?是的,可以在java中使用附加到文本字段的actionListener来完成。请参见此处了解javadocs 这里有一个类似的stackoverflow问题:是的,这可以在Java中使用附加到文本字段的actionListener来完成。请参见此处了解javadocs 这里有一个类似的st
这可以在java中完成吗?是的,可以在java中使用附加到文本字段的actionListener来完成。请参见此处了解javadocs
这里有一个类似的stackoverflow问题:是的,这可以在Java中使用附加到文本字段的actionListener来完成。请参见此处了解javadocs 这里有一个类似的stackoverflow问题: 所以,当我开始在textfield中填写姓名时,搜索就会完成 通过将
DocumentListener
附加到JTextField
的Document
,您可以对所有输入做出反应。每次用户向文本字段提供输入时(无论是通过键入、拖放、复制粘贴等方式),都会通知该侦听器
不过,捕获是您希望对用户输入执行的操作。DocumentListener
在事件调度线程上触发,此线程不应被长时间运行的操作阻塞,否则UI将冻结。执行数据库查询被视为“长时间运行的操作”。这意味着您必须确保在后台线程上执行搜索。搜索完成后,可以更新表,这必须在事件调度线程上完成。SwingWorker
类在这种情况下很有用。有关线程规则的更多信息,请参阅
第二个问题是,当提供新输入时,您可能希望取消以前的搜索。最有可能的情况是,用户键入的速度比您查询数据库的速度快,并用结果填充JTable
(假设网络连接没有那么快)
所以,当我开始在textfield中填写姓名时,搜索就会完成
通过将DocumentListener
附加到JTextField
的Document
,您可以对所有输入做出反应。每次用户向文本字段提供输入时(无论是通过键入、拖放、复制粘贴等方式),都会通知该侦听器
不过,捕获是您希望对用户输入执行的操作。DocumentListener
在事件调度线程上触发,此线程不应被长时间运行的操作阻塞,否则UI将冻结。执行数据库查询被视为“长时间运行的操作”。这意味着您必须确保在后台线程上执行搜索。搜索完成后,可以更新表,这必须在事件调度线程上完成。SwingWorker
类在这种情况下很有用。有关线程规则的更多信息,请参阅
第二个问题是,当提供新输入时,您可能希望取消以前的搜索。很可能用户输入的速度比您查询数据库的速度快,并用结果填充
JTable
(假设网络连接没有那么快)。我想您在寻找类似“我想搜索…”的搜索什么?表中当前的数据或数据库本身?我想在数据库中搜索数据并将其显示到Jtable,因此,当我开始在textfield中填充名称时,搜索就会完成。我想您可能需要一个,每次插入、删除或更改字符时,都会触发文档侦听器事件,在这些事件中,只需搜索文本并显示结果,因此,当用户再次键入/删除字符时,将显示较新的结果。我认为您正在寻找类似“我想搜索…”的内容搜索什么?表中当前的数据或数据库本身?我想在数据库中搜索数据并将其显示到Jtable,因此,当我开始在textfield中填充名称时,搜索就会完成。我想您可能需要一个,每次插入、删除或更改字符时,都会触发文档侦听器事件,在这些事件中,只需搜索文本并显示结果,因此当用户再次键入/删除字符时,将显示更新的结果。我也认为这个问题是关于自动完成/装饰的。我也认为这个问题是关于自动完成/装饰的