Can';t使用JavaFX在可运行模式下对接口进行更改
在我的程序中,我运行一个单独的脚本,我使用并发来运行单独的脚本,因此使用一个实现Runnable的类 当单独的线程运行时,我希望有一个与线程未运行时不同的图形,以便用户可以在按下按钮后查看是否发生了什么 线程的功能运行良好,只是在线程完成后,当我尝试从线程内部更改图形时,按钮图形没有更改 与问题相关的代码: 在课堂上:Can';t使用JavaFX在可运行模式下对接口进行更改,java,multithreading,javafx,runnable,Java,Multithreading,Javafx,Runnable,在我的程序中,我运行一个单独的脚本,我使用并发来运行单独的脚本,因此使用一个实现Runnable的类 当单独的线程运行时,我希望有一个与线程未运行时不同的图形,以便用户可以在按下按钮后查看是否发生了什么 线程的功能运行良好,只是在线程完成后,当我尝试从线程内部更改图形时,按钮图形没有更改 与问题相关的代码: 在课堂上: downloadSongs.setOnMousePressed(new EventHandler<MouseEvent>() {
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();
}
不能在应用程序线程之外更改用户界面。所有用户界面代码都会检查,如果没有,则抛出异常 您需要调用以确保在应用程序线程上执行更新,或者实现
要了解JavaFX中并发性的更多信息,您可以查看。我从线程中获取了代码,并将其放入类中的任务中,在该类中,接口中的所有内容都可以更改。但是图形仍然没有改变,我收到一个错误?我所要做的就是在任务成功时添加一个事件。这在本手册的示例1.5中
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);