Java 但它需要立即知道文件,而不是以后。如果它等到以后再获取文件,代码将运行,所选文件将为空,直到runLater线程启动connor,请参见:好吧,伙计,看起来我让它工作了。我有点作弊了,哈哈,但它仍然有效。我创建了一个全局文件变量,每当单击该按钮时,我都在线

Java 但它需要立即知道文件,而不是以后。如果它等到以后再获取文件,代码将运行,所选文件将为空,直到runLater线程启动connor,请参见:好吧,伙计,看起来我让它工作了。我有点作弊了,哈哈,但它仍然有效。我创建了一个全局文件变量,每当单击该按钮时,我都在线,java,eclipse,multithreading,Java,Eclipse,Multithreading,但它需要立即知道文件,而不是以后。如果它等到以后再获取文件,代码将运行,所选文件将为空,直到runLater线程启动connor,请参见:好吧,伙计,看起来我让它工作了。我有点作弊了,哈哈,但它仍然有效。我创建了一个全局文件变量,每当单击该按钮时,我都在线程外部设置该全局文件变量,然后在线程内部引用它。这样我就不会在uploadCSVThread中调用FileChooser。感谢所有人的帮助和帮助,非常感谢=]。不过,我想指出,这不是一个重复的问题。我试着使用Platform.runLater,


但它需要立即知道文件,而不是以后。如果它等到以后再获取文件,代码将运行,所选文件将为空,直到runLater线程启动connor,请参见:好吧,伙计,看起来我让它工作了。我有点作弊了,哈哈,但它仍然有效。我创建了一个全局文件变量,每当单击该按钮时,我都在线程外部设置该全局文件变量,然后在线程内部引用它。这样我就不会在uploadCSVThread中调用FileChooser。感谢所有人的帮助和帮助,非常感谢=]。不过,我想指出,这不是一个重复的问题。我试着使用Platform.runLater,但它并没有解决我的问题。伙计们,看起来我让它工作了。我有点作弊了,哈哈,但它仍然有效。我创建了一个全局文件变量,每当单击该按钮时,我都在线程外部设置该全局文件变量,然后在线程内部引用它。这样我就不会在uploadCSVThread中调用FileChooser。感谢所有人的帮助和帮助,非常感谢=]。不过,我想指出,这不是一个重复的问题。我尝试使用Platform.runLater,但它并没有解决我的问题。
public void uploadMessagesButtonActionPerformed(ActionEvent event) {
    if(uploadCSVThread.isAlive()) {
        uploadCSVThread.interrupt();
        try {
            uploadCSVThread.join();
        } catch(InterruptedException e) {
            e.printStackTrace();
        }
    }

    uploadCSVThread = new Thread() {
        public void run() {
            Platform.runLater( new Runnable() {
                public void run() {
                    loader.setProgress(0.0);
                    loader.setVisible(true);
                }
            });

            FileChooser currUploadFile = new FileChooser();
            File selectedFile = currUploadFile.showOpenDialog(null);
            if(selectedFile != null) {
                System.out.println(selectedFile.getPath());

                try {
                    FileReader currRdr = new FileReader(selectedFile);
                    CSVReader currReader = new CSVReader(currRdr);
                    final ArrayList<String[]> listOfMessages = (ArrayList<String[]>) currReader.readAll();
                    for(int i = 0; i < listOfMessages.size(); i++) {
                        final int x = i;
                        String[] shipmentMessages = listOfMessages.get(i);
                        //String[] shipmentMessages = currReader.readNext();
                        //while(shipmentMessages != null) { 
                        /*for(int i = 0; i < shipmentMessages.length; i++) {
                            System.out.println("shipmentMessages -> " + shipmentMessages[i]);
                        }*/
                        Map<String, String> headers = createHeaderMapFromHeaderString(shipmentMessages[0], "\n");
                        String body = shipmentMessages[1];
                        shipmentMessages = currReader.readNext();

                        try {
                            /*ObjectName queue = new ObjectName("org.apache.activemq:type=Broker,brokerName=" + currentBrokerName
                                                           + ",destinationType=Queue,destinationName=" + VM_AND_DIRECTVM_Q);*/
                            //headers.put("TO_DESTINATION", returnSelectedEndpoints());
                            QueueViewMBean queueView = (QueueViewMBean) MBeanServerInvocationHandler.newProxyInstance(conn,
                                                                                                                      currentQueue,
                                                                                                                      QueueViewMBean.class,
                                                                                                                      true);
                            queueView.sendTextMessage(headers, body, serverLookUp.serverUserNameLookUp(currentServer), serverLookUp.serverPasswordLookUp(currentServer));
                            Platform.runLater( new Runnable() {
                                public void run() {
                                    loader.setProgress((double)x/(double)listOfMessages.size());
                                }
                            });

                        } catch (MalformedObjectNameException e) {
                            logger.error(e);
                        }
                    }

                    updateQueueInList(currentQueue, currentQueueIndx, true);
                    readQueue(conn, currentQueue);
                    loader.setVisible(false);   
                } catch (Exception e) {
                    messageCouldntSendPopUpBox.setVisible(true);
                    logger.error(e);
                }
            }
            loader.setVisible(false);
        }
    };  
    uploadCSVThread.start();
}