1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
/*
*/
package goodies;
import java.awt.EventQueue;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
/**
*
* @author herve
*/
public class CuriousCompleteCombo
{
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception
{
EventQueue.invokeAndWait(new java.lang.Runnable()
{
public void run()
{
JFrame jf;
JComboBox combo;
jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
combo = new JComboBox();
combo.setEditable(true);
combo.setModel(new VeryInterstingModel());
AutoCompleteDecorator.decorate(combo, ObjectToStringConverter.DEFAULT_IMPLEMENTATION);
jf.add(combo);
jf.pack();
jf.setVisible(true);
}
});
}
private static class VeryInterstingModel extends
javax.swing.DefaultComboBoxModel
{
private boolean alreadyThere = false;
@Override
public int getSize()
{
return 3;
}
@Override
public Object getElementAt(int index)
{
return "you go "+index;
}
@Override
public void setSelectedItem(Object anObject)
{
System.out.println("anObject="+anObject+", alreadyThere="+alreadyThere);
alreadyThere = true;
super.setSelectedItem(anObject);
alreadyThere = false;
}
}
} |
Partager