我想你真的很喜欢JavaFXFXML,但我会把你引向JDBC和一些手工编码的JavaFX。
这些步骤包括安装MYSQL、安装ConnectorJ(这是一种将代码连接到MYSQL(驱动程序)的方法)记录密码、创建新的数据库、添加表和所需的列。
https://docs.oracle.com/javase/8/javafx/api/javafx/beans/property/SimpleStringProperty.html
这段代码有很多错误:你永远不应该从你的GUI线程中调用DB,等等。但是你必须从某个地方开始。如果这有帮助,请相应地标记。
import com.techtalix.util.Const;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class Test extends Application {
Connection connect = null;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
List<ImageDataObjs> imageURLs = null;
connectToDB();
imageURLs = makeDBCall();
GridPane root = new GridPane();
Scene theScene = new Scene(root);
stage.setTitle("Some scene");
stage.setScene(theScene);
root.setPadding(new Insets(10,10,10,10));
root.setHgap(10);
root.setVgap(10);
int cols=2, colCnt = 0, rowCnt = 0;
for (int i=0; i<imageURLs.size(); i++) {
root.add(imageURLs.get(i).imageView, colCnt, rowCnt);
colCnt++;
if (colCnt>cols) {
rowCnt++;
colCnt=0;
}
}
stage.initStyle(StageStyle.UNDECORATED);
stage.show();
}
class ImageDataObjs {
final ImageView imageView;
String imgURL, price;
public ImageDataObjs(String imgURL, String price) {
this.imgURL = imgURL;
this.price = price;
Path imagePath = Paths.get(imgURL);
File imageFile = imagePath.toFile();
Image image = new Image(imageFile.toURI().toString());
this.imageView = new ImageView(image);
}
}
private List<ImageDataObjs> makeDBCall() {
List<ImageDataObjs> imageDataObjList = new ArrayList<>();
String myPrice, myURL;
try {
Statement statement = connect.createStatement();
ResultSet resultSet = statement
.executeQuery("select * from myProductList");
while (resultSet.next()) {
myPrice = resultSet.getString("myImageURL");
myURL = resultSet.getString("somePriceData");
imageDataObjList.add(new ImageDataObjs(myURL, myPrice));
}
connect.close();
} catch (Exception e) {
e.printStackTrace();
}
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "1.99"));
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "2.99"));
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "3.99"));
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "4.99"));
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "5.99"));
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "6.99"));
imageDataObjList.add(new ImageDataObjs(Const.BASE_DIRECTORY + "png/bridge.png", "6.99"));
return imageDataObjList;
}
private void connectToDB() {
try {
connect =
DriverManager.getConnection("jdbc:mysql://localhost/someDatabase" +
"?user=root&password=root");
} catch (SQLException e) {
e.printStackTrace();
}
}