单击TableView时终止服务

时间:2014-07-25 11:44:26

标签: javafx javafx-8

我遇到了这个问题。 当我按下Button时,我执行服务,解析html页面并将结果放入表格中。但是当我点击表格时,在服务运行时,服务将被终止。 有人可以帮我解决这个问题吗?

这是我的Controller-Class

public class ProxySearchController implements Initializable {

       private Scene                             scene;
       @FXML
       private Button                            btn_refresh;
       @FXML
       private TableView<ProxyResult>            tbl_results;
       @FXML
       private ProgressBar                       pb_search;
       @FXML
       private TableColumn<ProxyResult, String>  column_ip;
       @FXML
       private TableColumn<ProxyResult, Integer> column_port;
       @FXML
       private TableColumn<ProxyResult, Locale>  column_locale;
       @FXML
       private TableColumn<ProxyResult, String>  column_anonymity;
       @FXML
       private TableColumn<ProxyResult, Boolean> column_google;
       @FXML
       private TableColumn<ProxyResult, Boolean> column_https;
       @FXML
       private TableColumn<ProxyResult, String>  column_lastchecked;
       @FXML
       private TableColumn<ProxyResult, Long>    column_response;

       private ObservableList<ProxyResult>       data   = FXCollections.observableArrayList();

       /*
        * (non-Javadoc)
        * 
        * @see javafx.fxml.Initializable#initialize(java.net.URL, java.util.ResourceBundle)
        */
       @Override
       public void initialize(URL location, ResourceBundle resources) {

          tbl_results.setItems(data);
          tbl_results.getSelectionModel().setCellSelectionEnabled(true);

          Clipboard clipboard = Clipboard.getSystemClipboard();
          // add listner to your tableview selecteditemproperty
          tbl_results.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<ProxyResult>() {

             @Override
             public void changed(ObservableValue observable, ProxyResult oldValue, ProxyResult newValue) {

                ObservableList<TablePosition> posList = tbl_results.getSelectionModel().getSelectedCells();
                int old_r = -1;
                StringBuilder clipboardString = new StringBuilder();
                for (TablePosition p : posList) {
                   int r = p.getRow();
                   int c = p.getColumn();
                   Object cell = tbl_results.getColumns().get(c).getCellData(r);
                   if (cell == null)
                      cell = "";
                   if (old_r == r)
                      clipboardString.append('\t');
                   else if (old_r != -1)
                      clipboardString.append('\n');
                   clipboardString.append(cell);
                   old_r = r;
                }
                final ClipboardContent content = new ClipboardContent();
                content.putString(clipboardString.toString());
                Clipboard.getSystemClipboard().setContent(content);
             }
          });

          column_ip.setCellValueFactory(new PropertyValueFactory<ProxyResult, String>("ip"));
          column_port.setCellValueFactory(new PropertyValueFactory<ProxyResult, Integer>("port"));
          column_locale.setCellValueFactory(new PropertyValueFactory<ProxyResult, Locale>("locale"));
          column_anonymity.setCellValueFactory(new PropertyValueFactory<ProxyResult, String>("anonymity"));
          column_google.setCellValueFactory(new PropertyValueFactory<ProxyResult, Boolean>("google"));
          column_https.setCellValueFactory(new PropertyValueFactory<ProxyResult, Boolean>("https"));
          column_lastchecked.setCellValueFactory(new PropertyValueFactory<ProxyResult, String>("lastChecked"));
          column_response.setCellValueFactory(new PropertyValueFactory<ProxyResult, Long>("responseTime"));
       }

       public void handleSearchButton(ActionEvent event) {

          Service<Void> searchWorker = new SearchProxyWorker(pb_search, data);

          searchWorker.setOnSucceeded(new EventHandler<WorkerStateEvent>() {

             @Override
             public void handle(WorkerStateEvent event) {

                System.out.println("Tadaaa");
             }

          });

          searchWorker.start();
       }

       /**
        * Set the current scene.
        * 
        * @param scene A scene
        */
       public void setScene(Scene scene) {

          this.scene = scene;
       }
    }

0 个答案:

没有答案