schimba culoarea Dynamically unui dreptunghi în JavaFX

voturi
0

Sunt crearea unui două javafx.scene.shape.Rectangleobiecte într - o GridPaneși face următoarele.

rectArray = new Rectangle[2];

boardGrid.setStyle(-fx-background-color: #C0C0C0;);

rectArray[0] = new Rectangle(12,12);
rectArray[0].setFill(Color.AQUA);
boardGrid.add(rectArray[0], 2, 0);

rectArray[1] = new Rectangle(12,12);
rectArray[1].setFill(Color.BLACK);
boardGrid.add(rectArray[1], 2, 1);       

Button buttonStart = new Button(Change color);
buttonStart.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
       @Override
       public void handle(MouseEvent event) {
          rectArray[0].setFill(Color.RED);
          try {
               Thread.sleep(2000);
          } 
          catch (InterruptedException e) {
               e.printStackTrace();
          }
          rectArray[1].setFill(Color.AZURE);
       }
});
boardGrid.add(buttonStart, 3, 1);
initializeScene(primaryStage, boardGrid);
...

Când am rulat codul am putea vedea două dreptunghiuri (unul în Aqua și unul în negru) și când fac clic pe butonul, va trebui să aștepte pentru 2 secunde pentru a vedea schimbarea în culori de ambele dreptunghiuri.

Am schimba culoarea unui dreptunghi înainte de a Thread.sleep(2000)se numește și apoi am schimba culoarea urmatorul dreptunghi.

Întrebarea mea este de ce-ar trebui să aștepte timp de 2 secunde? Există o modalitate pe care le pot actualiza în mod dinamic culorile dreptunghiului?

Întrebat 22/09/2013 la 05:23
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Tu dorm pe firul UI, care blochează orice prelucrare ulterioară (inclusiv reîmprospătarea ecranului).

Dacă aveți nevoie pentru a întârzia un cod puteți utiliza un PauseTransition să aștepte timp de două secunde și utilizarea acesteia onFinishedmetoda pentru a rula restul codului după așteptați.

Publicat 22/09/2013 la 06:49
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more