JTextField
矢量
中,并将其放入JList
向量
字符串
“未找到匹配项”
JWindow
package test;
import javax.swing.*;
import java.awt.Dimension;
import java.awt.event.*;
import java.util.Vector;
public class AutoCompleteTest extends JFrame{
JTextField city = new JTextField(10);
String enteredName = null;
String[] cities = {"new jersey","new hampshire",
"sussex","essex","london","delhi","new york"};
JList list = new JList();
JScrollPane pane = new JScrollPane();
ResultWindow r = new ResultWindow();
//------------------------------------------------------------------------------
public static void main(String[] args) {
new AutoCompleteTest();
}
//------------------------------------------------------------------------------
public AutoCompleteTest(){
setLayout(new java.awt.FlowLayout());
setVisible(true);
add(city);
// add(pane);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
city.addKeyListener(new TextHandler());
}
//------------------------------------------------------------------------------
public void initiateSearch(String lookFor){
Vector<String> matches = new Vector<>();
lookFor = lookFor.toLowerCase();
for(String each : cities){
if(each.contains(lookFor)){
matches.add(each);
System.out.println("Match: " + each);
}
}
this.repaint();
if(matches.size()!=0){
list.setListData(matches);
r.searchResult = list;
r.pane = pane;
r.initiateDisplay();
}else{
matches.add("No Match Found");
list.setListData(matches);
r.searchResult = list;
r.pane = pane;
r.initiateDisplay();
}
}
//------------------------------------------------------------------------------
public class ResultWindow extends JWindow{
public JScrollPane pane;
public JList searchResult;
//------------------------------------------------------------------------------
public ResultWindow(){
}
//------------------------------------------------------------------------------
public void initiateDisplay(){
pane.setViewportView(searchResult);
add(pane);
pack();
this.setLocation(AutoCompleteTest.this.getX() + 2,
AutoCompleteTest.this.getY()+
AutoCompleteTest.this.getHeight());
// this.setPreferredSize(city.getPreferredSize());
this.setVisible(true);
}
}
//------------------------------------------------------------------------------
class TextHandler implements KeyListener{
@Override
public void keyTyped(KeyEvent e){
}
@Override
public void keyPressed(KeyEvent e){
if(r.isVisible()){
r.setVisible(false);
}
if(e.getKeyChar() == '\n'){
initiateSearch(city.getText());
}
}
@Override
public void keyReleased(KeyEvent e){
}
}
//------------------------------------------------------------------------------
}
显示结果的JWindows
的大小(它是JScrollPane
中的JList
)根据结果而改变--如果城市名称小,JWindows
就小,如果城市名称大,JWindows
就大。
我试过所有可能的组合。我尝试使用JWindows
、JList
和JScrollPane
的SetPreferredDimension()
,但问题不会解决。
无论如何,我都希望它与修饰的JFrame
的大小匹配
>
JList
或JComboBox
没有返回正确的PreferredSize
。必须设置此值,将JList.SetPrototypeCellValue()与JWindow
的Pack()
一起使用(任何更改后必须打包)和或与Jlist.SetVisibleRowCount(),然后value将JList
的JScrollPane
中的
不要使用KeyListener
,请使用DocumentListener
(可以从系统剪贴板插入字符)用于JTextComponents
不要重新发明轮子,使用AutoComplete JComboBox/JTextField,您可以将匹配的结果重定向/返回到弹出窗口JWindow
/undariedJDialog/code>(这是弹出窗口回收的最佳解决方法)
编辑
不管怎样,所以基本上我将不得不手动创建一个列表的所有城市是要支持的,对吗??bx@小孩
不带
JTableHeader
添加行排序器(请参阅教程中的代码示例)
然后每一步都完成了:-),这里不需要任何其他东西(如果
rowfilter
返回不匹配项,那么更改jTextField
的background
就可以了,从DocumentListener
中为弹出窗口添加setVisible
(确保测试!isVisible
)
我想实现一个自动完成功能。目前我有一个包含JTextField的JPanel,当用户开始键入时,会出现一个包含几个选项的autocomplete(JPopupMenu)。 问题是它占用了文本字段的焦点,用户无法再键入。当我将焦点返回到文本字段时,用户不再有选项之间的导航(使用向上和向下按钮)。此外,对菜单的焦点不允许我截取它的KeyListener(不知道为什么),并且当我尝试处理文本字段端的输入
本文向大家介绍jQuery实现用户输入自动完成功能,包括了jQuery实现用户输入自动完成功能的使用技巧和注意事项,需要的朋友参考一下 利用jQuery UI中Auto-complete插件实现输入自动完成功能,大家在使用诸如淘宝、京东等电商平台搜索商品时,往往只要输入商品的一些特殊字符,就可以显示出和该字符相近的列表菜单,用户使用鼠标或者键盘方向键就可以快速选择,实现了很好的用户体验。 1.最简
本文向大家介绍自动完成的搜索框javascript实现,包括了自动完成的搜索框javascript实现的使用技巧和注意事项,需要的朋友参考一下 在很多需要搜索的网站, 都会有一个自动完成的搜索框. 方便用户查找他们想要的搜索词. 帮助用户快速找到自己想要的结果. 这种方式是比较友好的. 所以是比较提倡使用的. 我们这次就来实现这一效果. 我们通过两篇文章来进行讲解. 首先我们来完成界面的设计布局.
问题内容: 我有一个测试用例,需要在基于ajax的文本字段中输入部分值,并验证列表是否具有预期的内容。如果是这样,请选择内容。任何想法如何使这项工作? 问题答案: 该 类型 命令可能不足以触发自动完成功能。否则,Dave Webb的建议就会出现。我唯一的补充是您可能需要 typeKeys 命令,这会导致触发略有不同的JavaScript事件,这更有可能触发自动完成小部件。
使用AWS ACM证书颁发机构,我已按照此步骤为下属CA创建了CSR。 我还需要签署CSR(如下所述): 目前,我们没有任何架构体系来使用根CA的私钥签署CSR。我们目前有根CA从委托。 目标是使用ACMSDK自动化此签名请求 如何进一步使用此根CA的私钥签署CSR?