Wątek przeniesiony 2016-04-29 08:19 z Java przez bogdans.

ustawianie focusa

0

Witam, mam aplikacje ktora wykorzystuje KeyListenery i wykonuje akcje po wduszaniu przyciskow, jednak chcialabym aby jedna akcja wywolywana byla gdy operujemy na pierwszy JTextFieldzie, a druga gdy na innym, probowalam w ten sposob jednak bez rezultatu

public void keyPressed(KeyEvent e) {

      if (th.requestFocusInWindow() == true) {
        if (obr == 0) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime = System.currentTimeMillis();
            result[klik][obr] = 0;
        }
        if (obr == 1) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime1 = System.currentTimeMillis();
            result[klik][obr] = (System.currentTimeMillis() - myTime) / 10;
            System.out.print("Czas między 1, a 2:" + result[klik][obr] + "\n");
        }

        if (obr == 2) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime2 = System.currentTimeMillis();
            result[klik][obr] = (System.currentTimeMillis() - myTime1) / 10;
            System.out.print("Czas między 2, a 3:" + result[klik][obr] + "\n");
        }

        if (obr == 3) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime3 = System.currentTimeMillis();
            result[klik][obr] = (System.currentTimeMillis() - myTime2) / 10;
            System.out.print("Czas między 3, a 4:" + result[klik][obr] + "\n");
        }
        if (obr == 4) {
            wyniki[klik][obr] = e.getKeyChar();
            result[klik][obr] = (System.currentTimeMillis() - myTime3) / 10;
            System.out.print("Czas między 4, a 5:" + result[klik][obr] + "\n");

            // pętla foreach pobiera tablice jednowymiarowe
            for (long[] tablica1D : result) {
// dopiero pętla wewnętrzna pobiera liczby
                for (long liczba : tablica1D) {
                    // dla liczb < 10 dodajemy 0 przed cyfrą
                    System.out.print(liczba + ",");
                }
            }
            System.out.print("Wpusywane litery to:" + wyniki[0][0] + wyniki[0][1] + wyniki[0][2] + wyniki[0][3] + wyniki[0][4]);

        }

        obr++;
   

        if (e.getKeyCode() == KeyEvent.VK_ENTER) {

            if (klik == 0) {
                th.transferFocus();
                obr = 0;
            }
            if (klik == 1) {
                th1.transferFocus();
                obr = 0;
            }
            if (klik == 2) {
                th2.transferFocus();
                obr = 0;
            }
            if (klik == 3) {
                th3.transferFocus();
                obr = 0;
            }
            if (klik == 4) {

               // obr = 0;
                porownywanie();

            }

            klik++;

        } }
     
        
        if (tpass.requestFocusInWindow() == true) {
    obr=0;
            if (obr == 0) {
                wyniki1[obr] = e.getKeyChar();
                myTime = System.currentTimeMillis();
                result1[obr] = 0;
            }
            if (obr == 1) {
                wyniki1[obr] = e.getKeyChar();
                myTime1 = System.currentTimeMillis();
                result1[obr] = (System.currentTimeMillis() - myTime) / 10;
                System.out.print("Czas między 1, a 2:" + result1[obr] + "\n");
            }

            if (obr == 2) {
                wyniki1[obr] = e.getKeyChar();
                myTime2 = System.currentTimeMillis();
                result1[obr] = (System.currentTimeMillis() - myTime1) / 10;
                System.out.print("Czas między 2, a 3:" + result1[obr] + "\n");
            }

            if (obr == 3) {
                wyniki1[obr] = e.getKeyChar();
                myTime3 = System.currentTimeMillis();
                result1[obr] = (System.currentTimeMillis() - myTime2) / 10;
                System.out.print("Czas między 3, a 4:" + result1[obr] + "\n");

            }
            if (obr == 4) {
                wyniki1[obr] = e.getKeyChar();
                result1[obr] = (System.currentTimeMillis() - myTime3) / 10;
                System.out.print("Czas między 4, a 5:" + result1[obr] + "\n");
        //  for(char[] wiersz: wyniki)
                //  for(char element: wiersz)
                //  System.out.println(element);
                // pętla foreach pobiera tablice jednowymiarowe

                System.out.print("Wpusywane litery to:" + wyniki1[0] + wyniki1[1] + wyniki1[2] + wyniki1[3] + wyniki1[4]);

            }
0
textField1.addKeyListener(new KeyAdapter() {
      public void keyPressed(KeyEvent e) {
        akcja1();
     }
});
textField2.addKeyListener(new KeyAdapter() {
      public void keyPressed(KeyEvent e) {
        akcja2();
     }
});
0

Zamiast zabaw z fokusem, rozpoznawaj pole tekstowe w ten sposób:

JTextField src = (JTextField)(e.getSource());
...
if(src == tpass){
...
0

Porozbijaj te wielkie if'y na metody, a mniejsze if'y zmień na switch/case

0

sprobowalam tak jak ponizej, wciaz zero reakcji na tpass. na th wszystko dzieje sie tak jak powinno, ale jak wpisuje cos w JTEXTFIELDZIE tpass zero reakcji

JTextField src = (JTextField)(e.getSource());
 

  
    @Override
         public void keyPressed(KeyEvent e) {      
           

             
           if(src == tpass){
 
            obr=0;
            if (obr1 == 0) {
                wyniki1[obr1] = e.getKeyChar();
                myTime = System.currentTimeMillis();
                result1[obr1] = 0;
            }
            if (obr1 == 1) {
                wyniki1[obr1] = e.getKeyChar();
                myTime1 = System.currentTimeMillis();
                result1[obr1] = (System.currentTimeMillis() - myTime) / 10;
                System.out.print("Czas między 1, a 2:" + result1[obr1] + "\n");
            }

            if (obr1 == 2) {
                wyniki1[obr1] = e.getKeyChar();
                myTime2 = System.currentTimeMillis();
                result1[obr1] = (System.currentTimeMillis() - myTime1) / 10;
                System.out.print("Czas między 2, a 3:" + result1[obr1] + "\n");
            }

            if (obr1 == 3) {
                wyniki1[obr1] = e.getKeyChar();
                myTime3 = System.currentTimeMillis();
                result1[obr1] = (System.currentTimeMillis() - myTime2) / 10;
                System.out.print("Czas między 3, a 4:" + result1[obr1] + "\n");

            }
            if (obr == 4) {
                wyniki1[obr1] = e.getKeyChar();
                result1[obr1] = (System.currentTimeMillis() - myTime3) / 10;
                System.out.print("Czas między 4, a 5:" + result1[obr1] + "\n");
        //  for(char[] wiersz: wyniki)
                //  for(char element: wiersz)
                //  System.out.println(element);
                // pętla foreach pobiera tablice jednowymiarowe

                System.out.print("Wpusywane litery to:" + wyniki1[0] + wyniki1[1] + wyniki1[2] + wyniki1[3] + wyniki1[4]);

            }

         //
          //      if (klik == 1) {
           //         porownywanie1();
           //     }
  
            
              
}
    
    
     if(src == th){
      
        if (obr == 0) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime = System.currentTimeMillis();
            result[klik][obr] = 0;
        }
        if (obr == 1) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime1 = System.currentTimeMillis();
            result[klik][obr] = (System.currentTimeMillis() - myTime) / 10;
            System.out.print("Czas między 1, a 2:" + result[klik][obr] + "\n");
        }

        if (obr == 2) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime2 = System.currentTimeMillis();
            result[klik][obr] = (System.currentTimeMillis() - myTime1) / 10;
            System.out.print("Czas między 2, a 3:" + result[klik][obr] + "\n");
        }

        if (obr == 3) {
            wyniki[klik][obr] = e.getKeyChar();
            myTime3 = System.currentTimeMillis();
            result[klik][obr] = (System.currentTimeMillis() - myTime2) / 10;
            System.out.print("Czas między 3, a 4:" + result[klik][obr] + "\n");
        }
        if (obr == 4) {
            wyniki[klik][obr] = e.getKeyChar();
            result[klik][obr] = (System.currentTimeMillis() - myTime3) / 10;
            System.out.print("Czas między 4, a 5:" + result[klik][obr] + "\n");

            // pętla foreach pobiera tablice jednowymiarowe
            for (long[] tablica1D : result) {
// dopiero pętla wewnętrzna pobiera liczby
                for (long liczba : tablica1D) {
                    // dla liczb < 10 dodajemy 0 przed cyfrą
                    System.out.print(liczba + ",");
                }
            }
            System.out.print("Wpusywane litery to:" + wyniki[0][0] + wyniki[0][1] + wyniki[0][2] + wyniki[0][3] + wyniki[0][4]);

        }

        obr++;
   

        if (e.getKeyCode() == KeyEvent.VK_ENTER) {

            if (klik == 0) {
                th.transferFocus();
                obr = 0;
            }
            if (klik == 1) {
                th1.transferFocus();
                obr = 0;
            }
            if (klik == 2) {
                th2.transferFocus();
                obr = 0;
            }
            if (klik == 3) {
                th3.transferFocus();
                obr = 0;
            }
            if (klik == 4) {

               // obr = 0;
                porownywanie();

            }

            klik++;

        } 
     

     }}
         
0

Myśl trochę.

 
    @Override
         public void keyPressed(KeyEvent e) {      
           JTextField src = (JTextField)(e.getSource()); 
           if(src == tpass){

1 użytkowników online, w tym zalogowanych: 0, gości: 1