[英]Java: ArrayList with suggested phrases for an auto-complete combobox
[英]Auto suggested combobox in JFrame
我使用以下代碼將數據檢索到組合框中。 如何將Jcombobox更改為“自動建議的組合框”。 這意味着當我按A時,以A開頭的單詞將顯示在組合框中的項目字段中。
public void combo(){
try{
GCS.GContnStr();
TmpFlxTSt= GCS.GCotnStr.createStatement();
String select = "Select StudName from studentmaster";
TmpFlxTRs = TmpFlxTSt.executeQuery(select);
while(TmpFlxTRs.next())
{
String TmpOb1=TmpFlxTRs.getString("StudName");
TmpOb1.toString();
cbx.addItem(TmpOb1);
cbx.setMaximumRowCount(1);
}
嘗試從org.jdesktop.swingx.autocomplete包中使用Combobox
組件, 此處為 maven存儲庫
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.plaf.basic.*;
class Test
{
private JComboBox_ cb = null;
public Test() {
JFrame fr=new JFrame("TEST ComboBox");
JPanel p = new JPanel();
p.setLayout( new BorderLayout() );
String[] ss = new String[]
{ "112","1123","1124","1134",
"first",
"second",
"third",
"third 1 before",
"third 2",
"third 1 after",
"third quarter",
"fourth",
"fourth and more",
"fourth and more and more"
};
fr.getContentPane().add(p);
cb = new JComboBox_(ss);
p.add("South",cb);
p.add("Center",new JButton("test combo box"));
fr.pack();
fr.show();
}
public static void main( String[] args ) {
Test test=new Test();
}
}
class JComboBox_ extends JComboBox {
public int caretPos=0;
public JTextField tf=null;
public JComboBox_(final Object items[]) {
super(items);
this.setEditor(new BasicComboBoxEditor());
this.setEditable(true);
}
public void setSelectedIndex(int ind) {
super.setSelectedIndex(ind);
tf.setText(getItemAt(ind).toString());
tf.setSelectionEnd(caretPos+tf.getText().length());
tf.moveCaretPosition(caretPos);
// tf.setSelectionStart(caretPos);
}
public void setEditor(ComboBoxEditor anEditor) {
super.setEditor(anEditor);
if (anEditor.getEditorComponent() instanceof JTextField) {
tf=(JTextField)anEditor.getEditorComponent();
tf.addKeyListener(new KeyAdapter()
{
public void keyReleased( KeyEvent ev )
{
char key=ev.getKeyChar();
if (! (Character.isLetterOrDigit(key)||Character.isSpaceChar(key) )) return;
String s = tf.getText();
caretPos=tf.getCaretPosition();
String text="";
try {
text=tf.getText(0,caretPos);
}
catch (Exception ex) {
ex.printStackTrace();
}
int n=getItemCount();
for (int i=0; i<n; i++) {
int ind=((String)getItemAt(i)).indexOf(text);
if (ind==0) {
setSelectedIndex(i);
return;
}
}
}
} );
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.