Avatar billede napisok Nybegynder
26. oktober 2004 - 16:18 Der er 10 kommentarer og
1 løsning

JFormattedTextField til et andet JFormattedTextField

Jeg har lavet 2 JFormattedTextField, hvor der skal indtastes 1 tal i hvert, meningen er at når det første felt er udfyldt skal cursor automatisk flytte over i næste JFormattedTextField, hvordan gør man det, stumper af kode er:

private JLabel  LartV=new JLabel("Art");
        private JFormattedTextField  FartV=new JFormattedTextField(createFormatter("#"));
        private JLabel  LproducentV=new JLabel("Producent");
        private JFormattedTextField  FproducentV=new JFormattedTextField(createFormatter("#"));

protected MaskFormatter createFormatter(String s) {
        MaskFormatter formatter = null;
        try {
            formatter = new MaskFormatter(s);
        } catch (java.text.ParseException exc) {
            System.err.println("formatter is bad: " + exc.getMessage());
            System.exit(-1);
        }
        return formatter;
    }
Avatar billede fastpoint Nybegynder
26. oktober 2004 - 19:10 #1
det vil sige så snart man har trykket et tal ind skal den selv skifte uden at man trykker enter?
Avatar billede napisok Nybegynder
26. oktober 2004 - 19:43 #2
ja det er meningen, på samme måde som når man indtaster en serialkode på eks microsoft
Avatar billede _carsten Nybegynder
26. oktober 2004 - 20:37 #3
Du kan adde en keylistener.


        FartV.addKeyListener(new KeyAdapter(){
            public void keyTyped(KeyEvent k){
                if(Character.isDigit(k.getKeyChar())){
                    FproducentV.requestFocus();
                }
            }
        });



        FproducentV.addKeyListener(new KeyAdapter(){
            public void keyTyped(KeyEvent k){
                if(Character.isDigit(k.getKeyChar())){
                    FartV.requestFocus();
                }
            }
        });
Avatar billede fastpoint Nybegynder
26. oktober 2004 - 23:35 #4
nu sidder jeg ikke ved min egen  computer, men vil mene du bare kan skrive i dit første textfield en kode som holder øje med om der er et tal i tekstfeltet.. altså (fra 0-9) hvis ja så skal Focus skifte til det andet textfield.

Det er så kun en ide hvis carsten's forslag ikke virker.. men gør det sikkert;)
Avatar billede napisok Nybegynder
27. oktober 2004 - 09:30 #5
Har prøvet Carstens kode, den virker, men ikke helt som jeg ønsker, fordi den i begge felter skriver det samme tal og det noget skidt for tallene skal ikke være ens. Jeg prøver senere i dag at arbejde med koden
Avatar billede fastpoint Nybegynder
27. oktober 2004 - 09:37 #6
Hvis jeg er heldig at være hjemme til tiden vil jeg gerne kigge på det... men ellers er carsten måske hurtigere.. det jo hans kode;) men koden er den samme på de to og det skal den ikke være
Avatar billede fastpoint Nybegynder
27. oktober 2004 - 09:42 #7
men lige hurtigt som et alternativt løsningsforslag hehe... hvis de to felter ikke må indeholde samme værdi kan du lave en if statement som sletter indholdet af tekstfelt 2 hvis den matcher tekstfelt et... men det er så kun hvis de ikke må være ens..
Avatar billede napisok Nybegynder
27. oktober 2004 - 10:42 #8
tallene er aldrig ens og der er flere felter hvor der er fra 1 til 8 tal der skal indtastes
Avatar billede _carsten Nybegynder
27. oktober 2004 - 12:43 #9
Sorry - selvfølgelig gør den det, det havde jeg ikke lige tænkt på

Sådan skal den se ud:

addKeyListener(new KeyAdapter(){
            public void keyTyped(KeyEvent k){
                if(Character.isDigit(k.getKeyChar())){
                    processKeyEvent(new KeyEvent((Component)k.getSource(), KeyEvent.KEY_PRESSED, System.currentTimeMillis(), k.getModifiers(), k.getKeyCode(), k.getKeyChar() ));
                    ((Component)k.getSource()).transferFocus();
                }
            }
        });


-> fastpoint
Det er jo kun én linie kode der skal skrives, det kræver vel ikke at man sidder der hjemme.
Avatar billede napisok Nybegynder
27. oktober 2004 - 14:03 #10
Hvis nu man skal have flere tegn i samme felt som FartV, eks 3 tegn skal indtastes og derefter skal den flyttes til FproducentV, hvordan skal det gøres, gerne lidt kodeforklaring, for at jeg kan fatte hvad der sker
Avatar billede fastpoint Nybegynder
27. oktober 2004 - 16:12 #11
koden skal i hvertfald laves om så den ikke kun kigger efter en character... nok mere en string..
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