![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
Java swing中,如何实现自动补全提示的文本框,最好提供demo实例。 大致如下图所示:
3个回答
展开全部
这个得自己写个组件,去实现,Demo也没时间帮你写,写个类去继承JComponent 然后再监听JTextField
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class NewClass {
public static void main(String[] args) {
JFrame frame = new JFrame();
JComboBox bar = new JComboBox();
Component com = bar.getEditor().getEditorComponent();
final String[] datas = new String[]{"123123", "234123", "345123", "456123", "567123", "678123"};
final JTextComponent component = (JTextComponent) com;
final JList p = new JList(datas);
component.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (component.getText() == null || component.getText().length() == 0) {
return;
}
for (int i = 0; i < datas.length; i++) {
if (datas[i].toLowerCase().startsWith(component.getText())) {
p.setSelectedValue(datas[i], true);
String str = component.getText();
component.setText(datas[i]);
component.setSelectionStart(str.length());
component.setSelectionEnd(datas[i].length());
}
}
}
});
bar.setEditable(true);
frame.getContentPane().add(bar, BorderLayout.NORTH);
frame.getContentPane().add(new JScrollPane(p), BorderLayout.CENTER);
frame.setDefaultCloseOperation(3);
frame.setVisible(true);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
JComboBox bar = new JComboBox();
Component com = bar.getEditor().getEditorComponent();
final String[] datas = new String[]{"123123", "234123", "345123", "456123", "567123", "678123"};
final JTextComponent component = (JTextComponent) com;
final JList p = new JList(datas);
component.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (component.getText() == null || component.getText().length() == 0) {
return;
}
for (int i = 0; i < datas.length; i++) {
if (datas[i].toLowerCase().startsWith(component.getText())) {
p.setSelectedValue(datas[i], true);
String str = component.getText();
component.setText(datas[i]);
component.setSelectionStart(str.length());
component.setSelectionEnd(datas[i].length());
}
}
}
});
bar.setEditable(true);
frame.getContentPane().add(bar, BorderLayout.NORTH);
frame.getContentPane().add(new JScrollPane(p), BorderLayout.CENTER);
frame.setDefaultCloseOperation(3);
frame.setVisible(true);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个数据表,一个事件,一条模糊查询语句而已,自动补全没那么高深,哎
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询