В программе есть два изображения, которые я использую для кнопки загрузки, и одно имеет красный контур, а другое - нет. Когда поток работает или кнопка наведена, я хочу, чтобы там был красный контур. Это все работает, но единственная проблема заключается в том, что у меня есть код в потоке, который пытается изменить изображение статической кнопки под названием «downloadSongs».
При наведении курсора на кнопку и последующем выходе контур появляется и исчезает. Когда поток работает, красная линия также остается. Когда поток завершается, красная линия не исчезает (другими словами, вместо статической переменной ImageView загрузки в классе Download). Тем не менее, он вернется назад, если я наведу курсор мыши и выйду из кнопки после завершения потока.
Код, связанный с проблемой:
В классе:
downloadSongs.setOnMouseEntered(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent t){
downloadSongs.setGraphic(downloadHover);
}
});
downloadSongs.setOnMouseExited(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent t){
try{
if(dnld.isAlive()==false){
downloadSongs.setGraphic(download);
}
}catch(Exception e){
downloadSongs.setGraphic(download);
}
}
});
downloadSongs.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
try{
if(dnld.isAlive()==true){
}else{
dnld = new Thread(new DownloadThread());
dnld.start();
}
}catch(Exception e){
dnld = new Thread(new DownloadThread());
dnld.start();
}
В теме:
public class DownloadThread implements Runnable{
public void run(){
*function of run which works*
try {
*more code*
} catch (Exception e) {
ErrorPopUp.Display();
//add in the red line around it being added/taken away
Download.downloadSongs.setGraphic(Download.download);
}
Download.downloadSongs.setGraphic(Download.download);