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
| public class DemoAutocomplete {
private static final Insets INSETS = new Insets(2,2,2,2);
public static void main(String[] args) {
JFrame frame = new JFrame("Choix des instruments de musique");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridBagLayout());
createCombo(panel, 0, "Nom", "Anne", "Annatole", "Aude", "Annie", "Jean", "Jeanne", "Emma", "Émeline", "Jean-Paul", "Pauline", "Jean-Pierre", "Paul", "Pierre","Pamela","Éric");
createCombo(panel, 1, "Instrument", "Guitare", "Piano", "Saxophone", "Accordéon", "Balafon", "Biniou", "Banjo", "Violon", "Violoncelle", "Vielle", "Cor", "Clairon", "Clarinette", "Clavecin", "Cornemuse","Sitar","Harpe","Hautbois");
frame.add(panel);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SafeVarargs
private static Component createCombo(JPanel panel, int line, String id, String...data) {
final Collator collator = Collator.getInstance();
Arrays.sort(data, (a,b)->collator.compare(a, b));
final JLabel label = new JLabel(id+" :");
panel.add(label, new GridBagConstraints(0, line, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE, INSETS, 0,0));
final JComboBox<String> comboBox = new JComboBox<>(data);
AutoCompleteDecorator.decorate(comboBox, new ObjectToStringConverter() {
@Override
public String getPreferredStringForItem(Object paramObject) {
return String.valueOf(paramObject);
}
});
// on ajoute un écouteur de focus
comboBox.getEditor().getEditorComponent().addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
System.out.println("Perte du focus de la combo " + id);
}
});
panel.add(comboBox, new GridBagConstraints(1, line, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, INSETS, 0,0));
return comboBox;
}
} |
Partager