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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
| import java.awt.event.*;
import java.io.*;
import java.util.Scanner;
import javax.swing.*;
// appeler le fichier Exemple104_light_SmartJComboBox.java
// Nicolas_75
// le 24 août 2008
// pour http://www.developpez.net/forums/d26314/java/interfaces-graphiques-java/awt-swing/composants-standards/jcombobox-rechercher-elements/
public class Exemple104_light_SmartJComboBox {
public static void main(String[] args) {
// création de la fenêtre principale :
final JFrame frame = new JFrame("SmartJComboBox (1000)") ;
// 1000 parmi les 4036 chef-lieux de canton français :
// (http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement.asp)
final String[] NAMES = {
"[1] Ambérieu-en-Bugey", "[2] Bâgé-le-Châtel", "[3] Bellegarde-sur-Valserine", "[4] Belley", "[5] Bourg-en-Bresse-Est", "[6] Brénod", "[7] Ceyzériat", "[8] Chalamont", "[9] Champagne-en-Valromey", "[10] Châtillon-sur-Chalaronne",
"[11] Coligny", "[12] Collonges", "[13] Ferney-Voltaire", "[14] Gex", "[15] Hauteville-Lompnes", "[16] Izernore", "[17] Lagnieu", "[18] Lhuis", "[19] Meximieux", "[20] Montluel",
"[21] Montrevel-en-Bresse", "[22] Nantua", "[23] Oyonnax-Nord", "[24] Poncin", "[25] Pont-d'Ain", "[26] Pont-de-Vaux", "[27] Pont-de-Veyle", "[28] Saint-Rambert-en-Bugey", "[29] Saint-Trivier-de-Courtes", "[30] Saint-Trivier-sur-Moignans",
"[31] Seyssel", "[32] Thoissey", "[33] Treffort-Cuisiat", "[34] Trévoux", "[35] Villars-les-Dombes", "[36] Virieu-le-Grand", "[37] Bourg-en-Bresse-Nord-Centre", "[38] Bourg-en-Bresse-Sud", "[39] Péronnas", "[40] Miribel",
"[41] Oyonnax-Sud", "[42] Reyrieux", "[43] Viriat", "[44] Anizy-le-Château", "[45] Aubenton", "[46] Bohain-en-Vermandois", "[47] Braine", "[48] Capelle", "[49] Catelet", "[50] Charly-sur-Marne",
"[51] Château-Thierry", "[52] Chauny", "[53] Condé-en-Brie", "[54] Coucy-le-Château-Auffrique", "[55] Craonne", "[56] Crécy-sur-Serre", "[57] Fère", "[58] Fère-en-Tardenois", "[59] Guise", "[60] Hirson",
"[61] Laon-Nord", "[62] Marle", "[63] Moÿ-de-l'Aisne", "[64] Neufchâtel-sur-Aisne", "[65] Neuilly-Saint-Front", "[66] Nouvion-en-Thiérache", "[67] Oulchy-le-Château", "[68] Ribemont", "[69] Rozoy-sur-Serre", "[70] Sains-Richaumont",
"[71] Saint-Quentin-Centre", "[72] Saint-Simon", "[73] Sissonne", "[74] Soissons-Nord", "[75] Vailly-sur-Aisne", "[76] Vermand", "[77] Vervins", "[78] Vic-sur-Aisne", "[79] Villers-Cotterêts", "[80] Wassigny",
"[81] Laon-Sud", "[82] Saint-Quentin-Nord", "[83] Saint-Quentin-Sud", "[84] Soissons-Sud", "[85] Tergnier", "[86] Bourbon-l'Archambault", "[87] Cérilly", "[88] Chantelle", "[89] Chevagnes", "[90] Commentry",
"[91] Cusset-Nord", "[92] Dompierre-sur-Besbre", "[93] Donjon", "[94] Ébreuil", "[95] Escurolles", "[96] Gannat", "[97] Hérisson", "[98] Huriel", "[99] Jaligny-sur-Besbre", "[100] Lapalisse",
"[101] Lurcy-Lévis", "[102] Marcillat-en-Combraille", "[103] Mayet-de-Montagne", "[104] Montet", "[105] Montluçon-Est (4e Canton)", "[106] Montluçon-Ouest (2e Canton)", "[107] Montmarault", "[108] Moulins-Sud", "[109] Moulins-Ouest", "[110] Neuilly-le-Réal",
"[111] Saint-Pourçain-sur-Sioule", "[112] Souvigny", "[113] Varennes-sur-Allier", "[114] Vichy-Nord", "[115] Vichy-Sud", "[116] Montluçon-Nord-Est (1er Canton)", "[117] Montluçon-Sud (3e Canton)", "[118] Yzeure", "[119] Domérat-Montluçon-Nord-Ouest", "[120] Cusset-Sud",
"[121] Annot", "[122] Banon", "[123] Barcelonnette", "[124] Barrême", "[125] Castellane", "[126] Allos-Colmars", "[127] Digne-les-Bains-Est", "[128] Entrevaux", "[129] Forcalquier", "[130] Javie",
"[131] Lauzet-Ubaye", "[132] Manosque-Nord", "[133] Mées", "[134] Mézel", "[135] Motte-du-Caire", "[136] Moustiers-Sainte-Marie", "[137] Noyers-sur-Jabron", "[138] Peyruis", "[139] Reillanne", "[140] Riez",
"[141] Saint-André-les-Alpes", "[142] Saint-Étienne-les-Orgues", "[143] Seyne", "[144] Sisteron", "[145] Turriers", "[146] Valensole", "[147] Volonne", "[148] Digne-les-Bains-Ouest", "[149] Manosque-Sud-Est", "[150] Manosque-Sud-Ouest",
"[151] Aiguilles", "[152] Argentière-la-Bessée", "[153] Aspres-sur-Buëch", "[154] Barcillonnette", "[155] Bâtie-Neuve", "[156] Briançon-Nord", "[157] Chorges", "[158] Embrun", "[159] Gap-Campagne", "[160] Grave",
"[161] Guillestre", "[162] Laragne-Montéglin", "[163] Monêtier-les-Bains", "[164] Orcières", "[165] Orpierre", "[166] Ribiers", "[167] Rosans", "[168] Saint-Bonnet-en-Champsaur", "[169] Saint-Étienne-en-Dévoluy", "[170] Saint-Firmin",
"[171] Savines-le-Lac", "[172] Serres", "[173] Tallard", "[174] Veynes", "[175] Briançon-Sud", "[176] Gap-Centre", "[177] Gap-Nord-Est", "[178] Gap-Nord-Ouest", "[179] Gap-Sud-Est", "[180] Gap-Sud-Ouest",
"[181] Antibes-Biot", "[182] Bar-sur-Loup", "[183] Beausoleil", "[184] Breil-sur-Roya", "[185] Saint-Laurent-du-Var-Cagnes-sur-Mer-Est", "[186] Cannes-Est", "[187] Contes", "[188] Coursegoules", "[189] Escarène", "[190] Grasse-Sud",
"[191] Guillaumes", "[192] Levens", "[193] Menton-Est", "[194] Nice 1er Canton", "[195] Nice 2e Canton", "[196] Nice 3e Canton", "[197] Nice 4e Canton", "[198] Puget-Théniers", "[199] Roquebillière", "[200] Roquesteron",
"[201] Saint-Auban", "[202] Saint-Étienne-de-Tinée", "[203] Saint-Martin-Vésubie", "[204] Saint-Sauveur-sur-Tinée", "[205] Saint-Vallier-de-Thiey", "[206] Sospel", "[207] Lantosque", "[208] Vence", "[209] Villars-sur-Var", "[210] Villefranche-sur-Mer",
"[211] Tende", "[212] Nice 5e Canton", "[213] Nice 6e Canton", "[214] Cannet", "[215] Vallauris-Antibes-Ouest", "[216] Mandelieu-Cannes-Ouest", "[217] Nice 7e Canton", "[218] Nice 8e Canton", "[219] Nice 9e Canton", "[220] Nice 10e Canton",
"[221] Nice 11e Canton", "[222] Nice 12e Canton", "[223] Nice 13e Canton", "[224] Nice 14e Canton", "[225] Cagnes-sur-Mer-Ouest", "[226] Mougins", "[227] Antibes-Centre", "[228] Cagnes-sur-Mer-Centre", "[229] Cannes-Centre", "[230] Carros",
"[231] Grasse-Nord", "[232] Menton-Ouest", "[233] Annonay-Nord", "[234] Antraigues-sur-Volane", "[235] Aubenas", "[236] Bourg-Saint-Andéol", "[237] Burzet", "[238] Cheylard", "[239] Chomérac", "[240] Coucouron",
"[241] Joyeuse", "[242] Lamastre", "[243] Largentière", "[244] Montpezat-sous-Bauzon", "[245] Privas", "[246] Rochemaure", "[247] Saint-Agrève", "[248] Saint-Étienne-de-Lugdarès", "[249] Saint-Félicien", "[250] Saint-Martin-de-Valamas",
"[251] Saint-Péray", "[252] Saint-Pierreville", "[253] Satillieu", "[254] Serrières", "[255] Thueyts", "[256] Tournon-sur-Rhône", "[257] Valgorge", "[258] Vallon-Pont-d'Arc", "[259] Vans", "[260] Vernoux-en-Vivarais",
"[261] Villeneuve-de-Berg", "[262] Viviers", "[263] Voulte-sur-Rhône", "[264] Annonay-Sud", "[265] Vals-les-Bains", "[266] Asfeld", "[267] Attigny", "[268] Buzancy", "[269] Carignan", "[270] Charleville-Centre",
"[271] Château-Porcien", "[272] Chaumont-Porcien", "[273] Chesne", "[274] Flize", "[275] Fumay", "[276] Givet", "[277] Grandpré", "[278] Juniville", "[279] Machault", "[280] Mézières-Centre-Ouest",
"[281] Monthermé", "[282] Monthois", "[283] Mouzon", "[284] Novion-Porcien", "[285] Omont", "[286] Raucourt-et-Flaba", "[287] Renwez", "[288] Rethel", "[289] Rocroi", "[290] Rumigny",
"[291] Sedan-Nord", "[292] Sedan-Est", "[293] Signy-l'Abbaye", "[294] Signy-le-Petit", "[295] Tourteron", "[296] Vouziers", "[297] Charleville-La Houillère", "[298] Mézières-Est", "[299] Nouzonville", "[300] Revin",
"[301] Sedan-Ouest", "[302] Villers-Semeuse", "[303] Ax-les-Thermes", "[304] Bastide-de-Sérou", "[305] Cabannes", "[306] Castillon-en-Couserans", "[307] Foix-Ville", "[308] Fossat", "[309] Lavelanet", "[310] Mas-d'Azil",
"[311] Massat", "[312] Mirepoix", "[313] Oust", "[314] Pamiers-Ouest", "[315] Quérigut", "[316] Sainte-Croix-Volvestre", "[317] Saint-Girons", "[318] Saint-Lizier", "[319] Saverdun", "[320] Tarascon-sur-Ariège",
"[321] Varilhes", "[322] Vicdessos", "[323] Foix-Rural", "[324] Pamiers-Est", "[325] Aix-en-Othe", "[326] Arcis-sur-Aube", "[327] Bar-sur-Aube", "[328] Bar-sur-Seine", "[329] Bouilly", "[330] Brienne-le-Château",
"[331] Chaource", "[332] Chavanges", "[333] Ervy-le-Châtel", "[334] Essoyes", "[335] Estissac", "[336] Lusigny-sur-Barse", "[337] Marcilly-le-Hayer", "[338] Méry-sur-Seine", "[339] Mussy-sur-Seine", "[340] Nogent-sur-Seine",
"[341] Piney", "[342] Ramerupt", "[343] Riceys", "[344] Romilly-sur-Seine 1er Canton", "[345] Soulaines-Dhuys", "[346] Troyes 1er Canton", "[347] Troyes 2e Canton", "[348] Troyes 3e Canton", "[349] Vendeuvre-sur-Barse", "[350] Villenauxe-la-Grande",
"[351] Romilly-sur-Seine 2e Canton", "[352] Sainte-Savine", "[353] Troyes 4e Canton", "[354] Troyes 5e Canton", "[355] Troyes 6e Canton", "[356] Troyes 7e Canton", "[357] Chapelle-Saint-Luc", "[358] Alaigne", "[359] Alzonne", "[360] Axat",
"[361] Belcaire", "[362] Belpech", "[363] Capendu", "[364] Carcassonne 1er Canton", "[365] Carcassonne 2e Canton-Nord", "[366] Castelnaudary-Nord", "[367] Castelnaudary-Sud", "[368] Chalabre", "[369] Conques-sur-Orbiel", "[370] Couiza",
"[371] Coursan", "[372] Durban-Corbières", "[373] Fanjeaux", "[374] Ginestas", "[375] Lagrasse", "[376] Lézignan-Corbières", "[377] Limoux", "[378] Mas-Cabardès", "[379] Montréal", "[380] Mouthoumet",
"[381] Narbonne-Est", "[382] Peyriac-Minervois", "[383] Quillan", "[384] Saint-Hilaire", "[385] Saissac", "[386] Salles-sur-l'Hers", "[387] Sigean", "[388] Tuchan", "[389] Carcassonne 3e Canton", "[390] Narbonne-Ouest",
"[391] Narbonne-Sud", "[392] Carcassonne 2e Canton-Sud", "[393] Aubin", "[394] Belmont-sur-Rance", "[395] Bozouls", "[396] Camarès", "[397] Campagnac", "[398] Capdenac-Gare", "[399] Cassagnes-Bégonhès", "[400] Conques",
"[401] Cornus", "[402] Decazeville", "[403] Entraygues-sur-Truyère", "[404] Espalion", "[405] Estaing", "[406] Laguiole", "[407] Laissac", "[408] Marcillac-Vallon", "[409] Millau-Est", "[410] Montbazens",
"[411] Mur-de-Barrez", "[412] Najac", "[413] Nant", "[414] Naucelle", "[415] Peyreleau", "[416] Pont-de-Salars", "[417] Réquista", "[418] Rieupeyroux", "[419] Rignac", "[420] Rodez-Est",
"[421] Saint-Affrique", "[422] Saint-Amans-des-Cots", "[423] Saint-Beauzély", "[424] Saint-Chély-d'Aubrac", "[425] Sainte-Geneviève-sur-Argence", "[426] Saint-Geniez-d'Olt", "[427] Saint-Rome-de-Tarn", "[428] Saint-Sernin-sur-Rance", "[429] Salles-Curan", "[430] Salvetat-Peyralès",
"[431] Baraqueville-Sauveterre", "[432] Sévérac-le-Château", "[433] Vézins-de-Lévézou", "[434] Villefranche-de-Rouergue", "[435] Villeneuve", "[436] Millau-Ouest", "[437] Rodez-Ouest", "[438] Rodez-Nord", "[439] Aix-en-Provence-Nord-Est", "[440] Aix-en-Provence-Sud-Ouest",
"[441] Arles-Est", "[442] Arles-Ouest", "[443] Aubagne-Ouest", "[444] Berre-l'Étang", "[445] Châteaurenard", "[446] Ciotat", "[447] Eyguières", "[448] Gardanne", "[449] Istres-Nord", "[450] Lambesc",
"[451] Marseille-Belsunce", "[452] Marseille - Notre-Dame-du-Mont", "[453] Marseille-Les Grands-Carmes", "[454] Marseille-La Belle-de-Mai", "[455] Marseille-Les Cinq-Avenues", "[456] Marseille-Le Camas", "[457] Marseille - Saint-Just", "[458] Marseille-Montolivet", "[459] Marseille-La Capelette", "[460] Marseille - Saint-Giniez",
"[461] Martigues-Est", "[462] Orgon", "[463] Peyrolles-en-Provence", "[464] Port-Saint-Louis-du-Rhône", "[465] Roquevaire", "[466] Saintes-Maries-de-la-Mer", "[467] Saint-Rémy-de-Provence", "[468] Salon-de-Provence", "[469] Tarascon", "[470] Trets",
"[471] Allauch", "[472] Marignane", "[473] Marseille - Saint-Lambert", "[474] Marseille - Saint-Mauront", "[475] Marseille-Verduron", "[476] Marseille-La Rose", "[477] Marseille-Les Olives", "[478] Marseille - Saint-Marcel", "[479] Marseille-La Pomme", "[480] Marseille-La Pointe-Rouge",
"[481] Marseille - Saint-Barthélemy", "[482] Marseille-Mazargues", "[483] Aix-en-Provence-Centre", "[484] Châteauneuf-Côte-Bleue", "[485] Istres-Sud", "[486] Martigues-Ouest", "[487] Pélissanne", "[488] Pennes-Mirabeau", "[489] Vitrolles", "[490] Aubagne-Est",
"[491] Marseille-La Blancarde", "[492] Marseille-Les Trois Lucs", "[493] Marseille - Notre-Dame-Limite", "[494] Marseille - Sainte-Marguerite", "[495] Marseille-Vauban", "[496] Aunay-sur-Odon", "[497] Balleroy", "[498] Bayeux", "[499] Bény-Bocage", "[500] Blangy-le-Château",
"[501] Bourguébus", "[502] Bretteville-sur-Laize", "[503] Caen 1er Canton", "[504] Caen 2e Canton", "[505] Cambremer", "[506] Caumont-l'Éventé", "[507] Condé-sur-Noireau", "[508] Creully", "[509] Douvres-la-Délivrande", "[510] Dozulé",
"[511] Évrecy", "[512] Falaise-Nord", "[513] Falaise-Sud", "[514] Honfleur", "[515] Isigny-sur-Mer", "[516] Lisieux 1er Canton", "[517] Lisieux 2e Canton", "[518] Livarot", "[519] Mézidon-Canon", "[520] Morteaux-Coulibuf",
"[521] Orbec", "[522] Pont-l'Évêque", "[523] Ryes", "[524] Saint-Pierre-sur-Dives", "[525] Saint-Sever-Calvados", "[526] Thury-Harcourt", "[527] Tilly-sur-Seulles", "[528] Trévières", "[529] Troarn", "[530] Trouville-sur-Mer",
"[531] Vassy", "[532] Villers-Bocage", "[533] Vire", "[534] Caen 3e Canton", "[535] Caen 4e Canton", "[536] Hérouville-Saint-Clair (Caen 5e Canton)", "[537] Caen-Hérouville (Caen 6e Canton)", "[538] Caen 7e Canton", "[539] Caen 8e Canton", "[540] Caen 9e Canton",
"[541] Caen 10e Canton", "[542] Cabourg", "[543] Ouistreham", "[544] Lisieux 3e Canton", "[545] Allanche", "[546] Aurillac 1er Canton", "[547] Aurillac 2e Canton", "[548] Champs-sur-Tarentaine-Marchal", "[549] Chaudes-Aigues", "[550] Condat",
"[551] Laroquebrou", "[552] Massiac", "[553] Mauriac", "[554] Maurs", "[555] Montsalvy", "[556] Murat", "[557] Pierrefort", "[558] Pleaux", "[559] Riom-ès-Montagnes", "[560] Ruynes-en-Margeride",
"[561] Saignes", "[562] Saint-Cernin", "[563] Saint-Flour-Nord", "[564] Saint-Flour-Sud", "[565] Saint-Mamet-la-Salvetat", "[566] Salers", "[567] Vic-sur-Cère", "[568] Aurillac 3e Canton", "[569] Aurillac 4e Canton", "[570] Arpajon-sur-Cère",
"[571] Jussac", "[572] Aigre", "[573] Angoulême-Est", "[574] Angoulême-Nord", "[575] Aubeterre-sur-Dronne", "[576] Baignes-Sainte-Radegonde", "[577] Barbezieux-Saint-Hilaire", "[578] Blanzac-Porcheresse", "[579] Brossac", "[580] Chabanais",
"[581] Chalais", "[582] Champagne-Mouton", "[583] Châteauneuf-sur-Charente", "[584] Cognac-Nord", "[585] Confolens-Nord", "[586] Confolens-Sud", "[587] Hiersac", "[588] Jarnac", "[589] Mansle", "[590] Montbron",
"[591] Montembuf", "[592] Montmoreau-Saint-Cybard", "[593] Rochefoucauld", "[594] Rouillac", "[595] Ruffec", "[596] Saint-Amant-de-Boixe", "[597] Saint-Claud", "[598] Segonzac", "[599] Villebois-Lavalette", "[600] Villefagnan",
"[601] Couronne", "[602] Ruelle-sur-Touvre", "[603] Soyaux", "[604] Cognac-Sud", "[605] Angoulême-Ouest", "[606] Gond-Pontouvre", "[607] Aigrefeuille-d'Aunis", "[608] Archiac", "[609] Ars-en-Ré", "[610] Aulnay",
"[611] Burie", "[612] Château-d'Oléron", "[613] Courçon", "[614] Cozes", "[615] Gémozac", "[616] Jarrie", "[617] Jonzac", "[618] Loulay", "[619] Marans", "[620] Marennes",
"[621] Matha", "[622] Mirambeau", "[623] Montendre", "[624] Montguyon", "[625] Montlieu-la-Garde", "[626] Pons", "[627] Rochefort-Nord", "[628] Rochefort-Sud", "[629] Rochelle 1er Canton", "[630] Rochelle 2e Canton",
"[631] Royan-Est", "[632] Saint-Agnant", "[633] Saint-Genis-de-Saintonge", "[634] Saint-Hilaire-de-Villefranche", "[635] Saint-Jean-d'Angély", "[636] Saint-Martin-de-Ré", "[637] Saint-Pierre-d'Oléron", "[638] Saint-Porchaire", "[639] Saint-Savinien", "[640] Saintes-Nord",
"[641] Saintes-Ouest", "[642] Saujon", "[643] Surgères", "[644] Tonnay-Boutonne", "[645] Tonnay-Charente", "[646] Tremblade", "[647] Rochelle 3e Canton", "[648] Rochelle 4e Canton", "[649] Royan-Ouest", "[650] Rochelle 5e Canton",
"[651] Rochelle 6e Canton", "[652] Aytré", "[653] Rochefort-Centre", "[654] Rochelle 7e Canton", "[655] Rochelle 8e Canton", "[656] Rochelle 9e Canton", "[657] Saintes-Est", "[658] Aix-d'Angillon", "[659] Argent-sur-Sauldre", "[660] Aubigny-sur-Nère",
"[661] Baugy", "[662] Bourges 1er Canton", "[663] Chapelle-d'Angillon", "[664] Charenton-du-Cher", "[665] Chârost", "[666] Châteaumeillant", "[667] Châteauneuf-sur-Cher", "[668] Châtelet", "[669] Dun-sur-Auron", "[670] Graçay",
"[671] Guerche-sur-l'Aubois", "[672] Henrichemont", "[673] Léré", "[674] Levet", "[675] Lignières", "[676] Lury-sur-Arnon", "[677] Mehun-sur-Yèvre", "[678] Nérondes", "[679] Saint-Amand-Montrond", "[680] Saint-Martin-d'Auxigny",
"[681] Sancergues", "[682] Sancerre", "[683] Sancoins", "[684] Saulzais-le-Potier", "[685] Vailly-sur-Sauldre", "[686] Vierzon 1er Canton", "[687] Vierzon 2e Canton", "[688] Bourges 2e Canton", "[689] Bourges 3e Canton", "[690] Bourges 4e Canton",
"[691] Bourges 5e Canton", "[692] Saint-Doulchard", "[693] Argentat", "[694] Ayen", "[695] Beaulieu-sur-Dordogne", "[696] Beynat", "[697] Bort-les-Orgues", "[698] Brive-la-Gaillarde-Nord-Est", "[699] Bugeat", "[700] Corrèze",
"[701] Donzenac", "[702] Égletons", "[703] Eygurande", "[704] Juillac", "[705] Lapleau", "[706] Larche", "[707] Lubersac", "[708] Mercur", "[709] Meymac", "[710] Meyssac",
"[711] Neuvic", "[712] Roche-Canillac", "[713] Saint-Privat", "[714] Seilhac", "[715] Sornac", "[716] Treignac", "[717] Tulle-Urbain-Nord", "[718] Tulle-Urbain-Sud", "[719] Ussel-Est", "[720] Uzerche",
"[721] Vigeois", "[722] Brive-la-Gaillarde-Sud-Est", "[723] Brive-la-Gaillarde-Centre", "[724] Brive-la-Gaillarde-Nord-Ouest", "[725] Brive-la-Gaillarde-Sud-Ouest", "[726] Malemort-sur-Corrèze", "[727] Tulle-Campagne-Nord", "[728] Tulle-Campagne-Sud", "[729] Ussel-Ouest", "[730] Ajaccio 1er Canton",
"[731] Bastelica", "[732] Celavo-Mezzana", "[733] Bonifacio", "[734] Levie", "[735] Olmeto", "[736] Petreto-Bicchisano", "[737] Deux-Sevi", "[738] Porto-Vecchio", "[739] Santa-Maria-Siché", "[740] Cruzini-Cinarca",
"[741] Sartène", "[742] Tallano-Scopamène", "[743] Deux-Sorru", "[744] Zicavo", "[745] Ajaccio 2e Canton", "[746] Ajaccio 3e Canton", "[747] Ajaccio 4e Canton", "[748] Ajaccio 5e Canton", "[749] Figari", "[750] Ajaccio 6e Canton",
"[751] Ajaccio 7e Canton", "[752] Bastia 1er Canton", "[753] Bastia 2e Canton", "[754] Belgodère", "[755] Borgo", "[756] Sagro-di-Santa-Giulia", "[757] Niolu-Omessa", "[758] Calenzana", "[759] Calvi", "[760] Alto-di-Casaconi",
"[761] Campoloro-di-Moriani", "[762] Corte", "[763] Ghisoni", "[764] Île-Rousse", "[765] Moïta-Verde", "[766] Castifao-Morosaglia", "[767] Haut-Nebbio", "[768] Conca-d'Oro", "[769] Orezza-Alesani", "[770] Fiumalto-d'Ampugnani",
"[771] Prunelli-di-Fiumorbo", "[772] Capobianco", "[773] San-Martino-di-Lota", "[774] Bustanico", "[775] Venaco", "[776] Vescovato", "[777] Vezzani", "[778] Bastia 3e Canton", "[779] Bastia 4e Canton", "[780] Bastia 5e (Canton Lupino)",
"[781] Bastia 6e (Canton Furiani-Montésoro)", "[782] Aignay-le-Duc", "[783] Arnay-le-Duc", "[784] Auxonne", "[785] Baigneux-les-Juifs", "[786] Beaune-Nord", "[787] Beaune-Sud", "[788] Bligny-sur-Ouche", "[789] Châtillon-sur-Seine", "[790] Dijon 1er Canton",
"[791] Dijon 2e Canton", "[792] Dijon 3e Canton", "[793] Dijon 4e Canton", "[794] Fontaine-Française", "[795] Genlis", "[796] Gevrey-Chambertin", "[797] Grancey-le-Château-Neuvelle", "[798] Is-sur-Tille", "[799] Laignes", "[800] Liernais",
"[801] Mirebeau-sur-Bèze", "[802] Montbard", "[803] Montigny-sur-Aube", "[804] Nolay", "[805] Nuits-Saint-Georges", "[806] Pontailler-sur-Saône", "[807] Pouilly-en-Auxois", "[808] Précy-sous-Thil", "[809] Recey-sur-Ource", "[810] Saint-Jean-de-Losne",
"[811] Saint-Seine-l'Abbaye", "[812] Saulieu", "[813] Selongey", "[814] Semur-en-Auxois", "[815] Seurre", "[816] Sombernon", "[817] Venarey-les-Laumes", "[818] Vitteaux", "[819] Chenôve", "[820] Dijon 5e Canton",
"[821] Dijon 6e Canton", "[822] Dijon 7e Canton", "[823] Dijon 8e Canton", "[824] Fontaine-lès-Dijon", "[825] Bégard", "[826] Belle-Isle-en-Terre", "[827] Bourbriac", "[828] Broons", "[829] Callac", "[830] Caulnes",
"[831] Châtelaudren", "[832] Chèze", "[833] Collinée", "[834] Corlay", "[835] Dinan-Est", "[836] Dinan-Ouest", "[837] Étables-sur-Mer", "[838] Évran", "[839] Gouarec", "[840] Guingamp",
"[841] Jugon-les-Lacs", "[842] Lamballe", "[843] Lannion", "[844] Lanvollon", "[845] Lézardrieux", "[846] Loudéac", "[847] Maël-Carhaix", "[848] Matignon", "[849] Merdrignac", "[850] Moncontour",
"[851] Mûr-de-Bretagne", "[852] Paimpol", "[853] Perros-Guirec", "[854] Plancoët", "[855] Plélan-le-Petit", "[856] Pléneuf-Val-André", "[857] Plestin-les-Grèves", "[858] Pluc-sur-Lié", "[859] Plouagat", "[860] Plouaret",
"[861] Ploubalay", "[862] Plouguenast", "[863] Plouha", "[864] Pontrieux", "[865] Quintin", "[866] Roche-Derrien", "[867] Rostrenen", "[868] Saint-Brieuc-Nord", "[869] Saint-Brieuc-Sud", "[870] Saint-Nicolas-du-Pélem",
"[871] Tréguier", "[872] Uzel", "[873] Langueux", "[874] Plérin", "[875] Ploufragan", "[876] Saint-Brieuc-Ouest", "[877] Ahun", "[878] Aubusson", "[879] Auzances", "[880] Bellegarde-en-Marche",
"[881] Bénévent-l'Abbaye", "[882] Bonnat", "[883] Bourganeuf", "[884] Boussac", "[885] Chambon-sur-Voueize", "[886] Châtelus-Malvaleix", "[887] Chénérailles", "[888] Courtine", "[889] Crocq", "[890] Dun-le-Palestel",
"[891] Évaux-les-Bains", "[892] Felletin", "[893] Gentioux-Pigerolles", "[894] Grand-Bourg", "[895] Guéret-Nord", "[896] Jarnages", "[897] Pontarion", "[898] Royère-de-Vassivière", "[899] Saint-Sulpice-les-Champs", "[900] Saint-Vaury",
"[901] Souterraine", "[902] Guéret-Sud-Est", "[903] Guéret-Sud-Ouest", "[904] Beaumont-du-Périgord", "[905] Belvès", "[906] Bergerac 1er Canton", "[907] Brantôme", "[908] Bugue", "[909] Bussière-Badil", "[910] Buisson-de-Cadouin",
"[911] Carlux", "[912] Champagnac-de-Belair", "[913] Domme", "[914] Excideuil", "[915] Eymet", "[916] Hautefort", "[917] Issigeac", "[918] Jumilhac-le-Grand", "[919] Force", "[920] Lalinde",
"[921] Lanouaille", "[922] Mareuil", "[923] Monpazier", "[924] Montagrier", "[925] Montignac", "[926] Montpon-Ménestérol", "[927] Mussidan", "[928] Neuvic", "[929] Nontron", "[930] Périgueux-Centre",
"[931] Ribérac", "[932] Sainte-Alvère", "[933] Saint-Astier", "[934] Saint-Aulaye", "[935] Saint-Cyprien", "[936] Saint-Pardoux-la-Rivière", "[937] Saint-Pierre-de-Chignac", "[938] Salignac-Eyvigues", "[939] Sarlat-la-Canéda", "[940] Savignac-les-Églises",
"[941] Sigoulès", "[942] Terrasson-Lavilledieu", "[943] Thenon", "[944] Thiviers", "[945] Vélines", "[946] Vergt", "[947] Verteillac", "[948] Villamblard", "[949] Villefranche-de-Lonchat", "[950] Villefranche-du-Périgord",
"[951] Bergerac 2e Canton", "[952] Périgueux-Nord-Est", "[953] Périgueux-Ouest", "[954] Amancey", "[955] Audeux", "[956] Audincourt", "[957] Baume-les-Dames", "[958] Besançon-Nord-Est", "[959] Besançon-Sud", "[960] Boussières",
"[961] Clerval", "[962] Hérimoncourt", "[963] Isle-sur-le-Doubs", "[964] Levier", "[965] Maîche", "[966] Marchaux", "[967] Montbéliard-Est", "[968] Montbenoît", "[969] Morteau", "[970] Mouthe",
"[971] Ornans", "[972] Pierrefontaine-les-Varans", "[973] Pontarlier", "[974] Pont-de-Roide", "[975] Quingey", "[976] Rougemont", "[977] Roulans", "[978] Russey", "[979] Saint-Hippolyte", "[980] Vercel-Villedieu-le-Camp",
"[981] Besançon-Est", "[982] Besançon-Ouest", "[983] Montbéliard-Ouest", "[984] Sochaux-Grand-Charmont", "[985] Besançon-Nord-Ouest", "[986] Besançon-Planoise", "[987] Étupes", "[988] Valentigney", "[989] Bourdeaux", "[990] Bourg-de-Péage",
"[991] Buis-les-Baronnies", "[992] Chabeuil", "[993] Chapelle-en-Vercors", "[994] Châtillon-en-Diois", "[995] Crest-Nord", "[996] Crest-Sud", "[997] Die", "[998] Dieulefit", "[999] Grand-Serre", "[1000] Grignan"
};
// construction du modèle initial contenant
// les 1000 noms :
DefaultComboBoxModel model = new DefaultComboBoxModel() ;
for (String name : NAMES) {
model.addElement(name);
}
// création de la JComboBox sur la base du
// modèle précédent :
final JComboBox cb = new JComboBox(model) ;
cb.setEditable(true);
// ajout d'un Listener sur les évènements clavier
// si le contenu du champ texte est modifié, la liste des
// choix possibles est limitée aux noms contenant la
// chaîne entrée par l'utilisateur
cb.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
// en cas d'appui sur une touche au sein
// de la zone de texte...
// on récupère le texte entré :
String text2 = (String) cb.getEditor().getItem();
// on crée un nouveau modèle...
DefaultComboBoxModel model2 = new DefaultComboBoxModel() ;
// ... qui ne contient que les zones contenant le texte entré :
for (String name : NAMES) {
if (name.contains(""+text2)) {
model2.addElement(name);
}
}
// on affiche dans le titre de la fenêtre le nb de choix possibles :
frame.setTitle("SmartJComboBox ("+model2.getSize()+")");
// on met en oeuvre le nouveau modèle :
cb.setModel(model2);
// on ré-affiche le texte entré par l'utilisateur après le changement de modèle :
cb.getEditor().setItem(text2);
// on force l'affichage de la liste :
cb.setPopupVisible(true);
}
} );
// affichage de la fenêtre principale :
frame.add(cb) ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack() ;
frame.setLocationRelativeTo(null); // pour centrer sur l'écran
frame.setVisible(true);
}
} |