23. marts 2005 - 16:47Der er
17 kommentarer og 1 løsning
Langsom KeyEvent.VK_ENTER ved Jlist
Jeg har en Jlist som implements KeyListener. Jeg lægger 25.000 strenge i listen, og oplever at et VK_ENTER keyevent tager meget lang tid. Andre keyevents kører fint både ved få og mange elementer. Er det en bug?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
hmm jeg har lige haft brugt den til en ordbog jeg lavede (ikke noget avanceret) og der mærkede jeg ikke nogen forskel på den i forhold til hvis jeg havde valgt noget andet.
// udkommenter evt. denne linie og erstat fm.getAscent() med 2 eller 3 // måske vinder du en brøkdel i performance ved det. fm = g.getFontMetrics(g.getFont());
Jo, det gør det - og det skyldes at en DefaultCellRenderer som extender JLabel, er langt tungere at gentegne og når du har så mange elementer i listen, er du nødt til at være kreativ for at opnå performance.
Det handler IKKE om CellRenderer. Prøv det. Når jeg trykker ENTER gør jeg intet ved listen (Jeg fanger ikke engang eventet!), og dermed bliver CellRenderer heller ikke kørt.
Og som jeg også skrev i http://www.eksperten.dk/spm/560788 handler det ikke om hvor mange elementer der er i listen, men hvor mange der er synlige på skærmen. :)
Umiddelbart lyder det ikke som den rigtige løsning, da override af getNextMatch() og return -1 forhindrer søgning på næste match, og derved sætter en vigtigt del af JListens egenskaber ud af funktion, selfølgelig vil den virke i din situation, men rigtig - nej, det mener jeg absolut ikke
Ærlig talt, så forstår jeg ikke getNextMatch. Hvis man har en helt normal JList, så indeholder den da ikke "gå til elementet med forbogstavet jeg trykker"-funktionalitet. Den har jeg selv måtte implementere selv.
Så må det være KeyListeneren der fjerner den. Den har jeg brug for.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.