I'd like to read numbers from a web page and use them in a program. This program displays the web page, but how do I display the table below the web page? And how do I populate the table with the dates and prices from the web page.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
public class Step4 {
private void initAndShowGUI(final String url) {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
mainPanel.add(fxPanel, BorderLayout.NORTH);
TableModel dataModel = new AbstractTableModel() {
private static final long serialVersionUID = -147208558114868864L;
public int getColumnCount() { return 10; }
public int getRowCount() { return 10;}
public Object getValueAt(int row, int col) { return new Integer(row*col); }
};
JTable table = new JTable(dataModel);
JScrollPane tableContainer = new JScrollPane(table);
JPanel display = new JPanel();
display.setLayout(new BorderLayout());
display.add(tableContainer, BorderLayout.CENTER);
mainPanel.add(display, BorderLayout.SOUTH);
frame.add(mainPanel);
frame.pack();
frame.setSize(1000, 650);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel, url);
}
});
}
private void initFX(JFXPanel fxPanel, String url2) {
// This method is invoked on the JavaFX thread
Scene scene = createScene(url2);
fxPanel.setScene(scene);
}
private Scene createScene(String url2) {
Scene scene = new Scene(new Browser_1(url2),750,500, Color.web("#666970"));
return (scene);
}
public static void main(String[] args) {
final String url = "https://www.tsp.gov/investmentfunds/shareprice/sharePriceHistory.shtml";
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Step4 s = new Step4();
s.initAndShowGUI(url);
}
});
}
}
class Browser_1 extends Region {
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
public Browser_1(String url) {
//apply the styles
getStyleClass().add("browser");
// load the web page
webEngine.load(url);
//add the web view to the scene
getChildren().add(browser);
}
@SuppressWarnings("unused")
private Node createSpacer() {
Region spacer = new Region();
HBox.setHgrow(spacer, Priority.ALWAYS);
return spacer;
}
@Override protected void layoutChildren() {
double w = getWidth();
double h = getHeight();
layoutInArea(browser,0,0,w,h,0, HPos.CENTER, VPos.CENTER);
}
@Override protected double computePrefWidth(double height) {
return 750;
}
@Override protected double computePrefHeight(double width) {
return 500;
}
}