What I want to do:
[Web Scraping with Jsoup]
Adding elements to a TableView from an another Thread extended Class.
Button click -> start Thread -> Thread add elements to TableView.
Files
|javafxapplication5
|-->FXMLDocuments.fxml
|-->FXMLDocumentController.java
|-->JavaFXApplication5.java
|-->Scraper.java
FXMLDocumentController.java
package javafxapplication5;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;
public class FXMLDocumentController implements Initializable {
Scraper scraper = new Scraper();
@FXML
private Label label;
@FXML
private Button shareButton;
@FXML
private TextField searchInput;
@FXML
private Button searchTorrents;
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
}
@FXML
private void setMouseEntered(MouseEvent event)
{
searchTorrents.setStyle("-fx-border-color:blue");
}
@FXML
private void setMouseLeaved(MouseEvent event)
{
searchTorrents.setStyle("-fx-border-color:black");
}
@FXML
private void shareButton(ActionEvent event)
{
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("Hai cliccato il bottone share");
alert.showAndWait();
}
@FXML
private void scrapButton(ActionEvent event)
{
scraper.start();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Scraper.java
package javafxapplication5;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Scraper extends Thread{
public void run()
{
Document doc;
try {
doc = Jsoup.connect("https://www.allkeyshop.com/blog/daily-deals/").get();
Elements gamesNames = doc.select(".search-results-row-game-title");
for (Element element:gamesNames)
{
//Update TableView
}
} catch (IOException ex) {
Logger.getLogger(TorrentScraper.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
I hope is everything clear, if not please answer me with a constructive suggestion.