Avatar billede tblaster Nybegynder
14. oktober 2014 - 13:39 Der er 9 kommentarer og
1 løsning

Mellemrum i teksten i JComboBox

Hej

Jeg har en JComboBox hvor jeg ønsker at have mellemrum foran nogle tekster således at jeg kan få en træstruktur som:
Menu 1
      Undermenu 1
      Undermenu 2
Menu 2

Jeg kan oprette mellemrummene på følgende måde:
my1Combo = new JComboBox();
my1Combo.addItem("    "+wrappedValue);

Mit problem er bare at fjerne mellemrummene igen og undersøge værdien. Pt. bruger jeg følgende:
final Object selectedItem = my1Combo.getSelectedItem();
if (selectedItem instanceof ValueWrapper) {
...
}

Men da der er mellemrum i værdierne vil de ikke være i ValueWrapper. Jeg har prøvet med følgende men det virker ikke:
final Object selectedItem = my1Combo.getSelectedItem().toString().replaceFirst("    ", "");

Hvad gør jeg forkert?
Avatar billede Deepone Nybegynder
14. oktober 2014 - 14:14 #1
Nu er jeg ikke den store java programmør, men i C# kan man lave en .Trim() for at fjerne alle mellemrum i en string..

Er næsten sikker på at man kan gøre det samme i java.
Avatar billede tblaster Nybegynder
14. oktober 2014 - 14:23 #2
Trim() kan ikke bruges for der kan godt være mellemrum i værdierne som skal beholdes. Det er kun de første 5 mellemrum der skal fjernes.
Avatar billede Deepone Nybegynder
14. oktober 2014 - 14:24 #3
Altså string.Trim() for at fjerne alle mellemrum før og efter, ellers kan man kalde TrimStart() eller TrimEnd().
Avatar billede tblaster Nybegynder
14. oktober 2014 - 14:36 #4
Ok, nu er jeg med. Men my1Combo.getSelectedItem().toString().trim() giver samme resultat at selectedItem ikke godkendes som værende en del af ValueWrapper og derfor kommer koden ikke ind i if lykken.
Avatar billede arne_v Ekspert
14. oktober 2014 - 15:47 #5
.trim() fjerner kun leading og trailing spaces - ikke spaces inde i teksten
Avatar billede arne_v Ekspert
14. oktober 2014 - 15:51 #6
final Object selectedItem = my1Combo.getSelectedItem().toString().replaceFirst("    ", "");

som reelt er:

final String selectedItem = ((String)my1Combo.getSelectedItem()).replaceFirst("    ", "");

virker vel.

Dit probleme er vel at aendring fra:

my1Combo.addItem(wrappedValue);

til:

my1Combo.addItem("    "+wrappedValue);

aendrer item type fra ValueWrapper til String
Avatar billede tblaster Nybegynder
14. oktober 2014 - 16:13 #7
Er der en smartere måde så at tilføje mellemrum foran teksten så den ikke laves om til String?
Avatar billede arne_v Ekspert
14. oktober 2014 - 16:25 #8
Lade ValueWrapper toString tilfoeje de spaces??
Avatar billede tblaster Nybegynder
16. oktober 2014 - 09:57 #9
Tak for dit svar Arne - jeg tilføjede de ekstre mellemrum i ValueWrapper for at løse det. Smit et svar så lukker jeg spørgsmålet!
Avatar billede arne_v Ekspert
16. oktober 2014 - 15:09 #10
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester