2013-02-19 2 views
6

Używam selectionAll(), aby zaznaczyć cały tekst w moim polu tekstowym, ale działa on tylko wtedy, gdy fokus pochodzi z klawiatury (np. Tab).JavaFx: Metoda selectAll() po prostu działa za pomocą fokusa z klawiaturą

Jeśli kliknę myszą w polu tekstowym, tekst zostanie wybrany na bardzo krótki moment. Ale musi działać tak, jak w przypadku fokusa, który pochodzi z klawiatury.

flaschenPreis.focusedProperty().addListener(new ChangeListener<Boolean>() { 
     public void changed(ObservableValue ov, Boolean t, Boolean t1) { 


      if (flaschenPreis.isFocused() && 
        !flaschenPreis.getText().isEmpty()) { 
       flaschenPreis.selectAll(); 
      }    
     } 
    }); 


    literPreis.focusedProperty().addListener(new ChangeListener() { 
     public void changed(ObservableValue ov, Object t, Object t1) { 

      if (literPreis.isFocused() && 
        !literPreis.getText().isEmpty()) { 
       literPreis.selectAll(); 
      } 
     } 
    }); 

flaschenPreis und literPreis są moje Pola tekstowe

+0

wygląda jak błąd, zgłoś tutaj http://javafx-jira.kenai.com/ secure/Dashboard.jspa – invariant

Odpowiedz

13

Ta sztuczka pomoże Ci:

final TextField tf = new TextField("Text"); 
    tf.focusedProperty().addListener(new ChangeListener<Boolean>() { 
     @Override 
     public void changed(ObservableValue ov, Boolean t, Boolean t1) { 

      Platform.runLater(new Runnable() { 
       @Override 
       public void run() { 
        if (tf.isFocused() && !tf.getText().isEmpty()) { 
         tf.selectAll(); 
        } 
       } 
      }); 
     } 
    }); 
+0

Wow! To działa!! Niesamowite!!! Ta część jest tak ważna dla programu, nad którym pracuję. Dziękuję bardzo!! Doceniam twoją pomoc. – Sonja

+1

Sonja, czy zgłosiłeś problem? –

+0

jeszcze nie. zrobię to wkrótce – Sonja