如何在Netbeans 7.1中編輯JComboBox
自動完成,如在VB點網中的ComboBox
。我有一個帶有列表綁定的組合框,我想通過在列表中僅輸入項目的某個第一個字母來選擇項目,例如,如果列表有kitten
,那麼當我輸入ki
時應該選擇它。JComboBox自動完成
回答
如果您想自己做,可以按照this article中所述的步驟操作。
如果您不想重新發明輪子,您可以使用現有的第三方庫來添加此功能,如this article中所述。例如使用SwingX庫(例如從鏈接的文章複製):
this.comboBox = new JComboBox(new Object[] { "Ester", "Jordi",
"Jordina", "Jorge", "Sergi" });
AutoCompleteDecorator.decorate(this.comboBox);
我公司開發的名爲「AutoComboBox」定製JComboBox的擺動,你通過派生此gist它類型的自動完成。
這是一個小的演示。
首先聲明並初始化它。 (如果您使用的是IDE,只需將放置類到您的JFrame或JDialog的形式)
AutoComboBox autoComboBox = new AutoComboBox();
接下來,設置項目列表。它需要一個String數組。您可以通過修改AutoComboBox類來更改類型。
String[] itemArray = {"Malith", "John", "Jack" };
autoComboBox.setKeyWord(itemArray);
現在你有一個自動完成的JComboBox其中有「Malith」,「約翰」,「傑克」的項目!
這裏有兩個類我公司開發,
的AutoComboBox.java
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
public class AutoComboBox extends JComboBox<Object> {
String keyWord[] = {"item1", "item2", "item3"};
Vector myVector = new Vector();
public AutoComboBox() {
setModel(new DefaultComboBoxModel(myVector));
setSelectedIndex(-1);
setEditable(true);
JTextField text = (JTextField) this.getEditor().getEditorComponent();
text.setFocusable(true);
text.setText("");
text.addKeyListener(new ComboListener(this, myVector));
setMyVector();
}
/**
* set the item list of the AutoComboBox
* @param keyWord an String array
*/
public void setKeyWord(String[] keyWord) {
this.keyWord = keyWord;
setMyVectorInitial();
}
private void setMyVector() {
int a;
for (a = 0; a < keyWord.length; a++) {
myVector.add(keyWord[a]);
}
}
private void setMyVectorInitial() {
myVector.clear();
int a;
for (a = 0; a < keyWord.length; a++) {
myVector.add(keyWord[a]);
}
}
}
的ComboListener.java
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import org.apache.commons.lang3.text.WordUtils;
public class ComboListener extends KeyAdapter
{
@SuppressWarnings("rawtypes")
JComboBox cbListener;
@SuppressWarnings("rawtypes")
Vector vector;
@SuppressWarnings("rawtypes")
public ComboListener(JComboBox cbListenerParam, Vector vectorParam)
{
cbListener = cbListenerParam;
vector = vectorParam;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void keyReleased(KeyEvent key)
{
// TODO Auto-generated method stub
String text = ((JTextField)key.getSource()).getText();
cbListener.setModel(new DefaultComboBoxModel(getFilteredList(text)));
cbListener.setSelectedIndex(-1);
((JTextField)cbListener.getEditor().getEditorComponent()).setText(text);
cbListener.showPopup();
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public Vector getFilteredList(String text)
{
Vector v = new Vector();
for(int a = 0;a<vector.size();a++)
{
if(vector.get(a).toString().startsWith(text))
{
v.add(vector.get(a).toString());
}
else if(vector.get(a).toString().startsWith(text.toLowerCase()))
{
v.add(vector.get(a).toString());
}
else if(vector.get(a).toString().startsWith(text.toUpperCase()))
{
v.add(vector.get(a).toString());
}
else if(vector.get(a).toString().startsWith(WordUtils.capitalizeFully(text)))
{
v.add(vector.get(a).toString());
}
else if(vector.get(a).toString().startsWith(WordUtils.uncapitalize(text)))
{
v.add(vector.get(a).toString());
}
}
return v;
}
}
您可能需要導入org.apache.commons.lang3.text.WordUtils ... – Malith
有趣,但它需要一些更改。最重要的是,主密鑰在您的解決方案中不起作用。我在這裏解決了這個問題:http://tinybrain.de/1007529。一個懸而未決的問題是如何使向下箭頭正常工作。 –
通過的JComboBox搜索另一個很酷庫: http://www.jidesoft.com/products/oss.htm
,你可以在這裏下載的jar: http://www.java2s.com/Code/JarDownload/jide/jide-oss-3.5.7.jar.zip
項目中的所有您需要做的導入庫後爲:
JComboBox comboBox = ....;
ComboBoxSearchable searchable = new ComboBoxSearchable(comboBox);
- 1. Java JComboBox自動完成
- 2. 自動完成的JComboBox
- 3. 在jCombobox上實現自動完成
- 4. JComboBox/JTextField的每個字的任意位置自動完成
- 5. 自動完成配置JComboBox中的可序列化例外
- 6. 如何在Swing中創建自動完成JComboBox?
- 7. 帶有自動完成功能的Java JComboBox
- 8. 自動完成
- 9. 自動完成
- 10. JTextField自動完成
- 11. AJAX +自動完成
- 12. JQuery自動完成
- 13. Android自動完成
- 14. Postgresql自動完成?
- 15. url.action自動完成
- 16. YUI3自動完成
- 17. iPhone自動完成
- 18. Parsekit自動完成
- 19. AngularJS自動完成
- 20. NSTextField自動完成
- 21. jquer自動完成
- 22. Knockout自動完成
- 23. 自動完成jquery
- 24. 與自動完成
- 25. jQueryUI自動完成
- 26. Prestashop自動完成
- 27. 多自動完成
- 28. Array_Push自動完成
- 29. Emacs自動完成
- 30. Formtastic自動完成
不知道是怎麼回事這是寫的時候,但第一個鏈接中的代碼現在處於公共領域並且可以在網站上使用。它可以馬上使用。 – reden