我正在创建一个项目,在这个项目中,用户可以创建尽可能多的程序,我必须按程序显示为按钮,就像这里我展示了6 program
这项工作在php
中非常简单,但在javafx
我不知道如何通过从数据库中获取数据来添加这么多内容。
现在每个按钮都必须包含一些功能
我可以手动完成,所以有限制我无法将其扩展到无限,所以我需要你的帮助如何做这项工作。
答案 0 :(得分:0)
完成它的步骤是:
以下是此类功能的示例:
public Class example{
private Connection createInitialCon() {
try {
return DriverManager.getConnection(
"jdbc:mysql://yourdatabaseaddress:youdatabaseport/databasename",
"database_usernamer",
"database_password");
} catch (SQLException e) {
rootLog.debug("Error connecting to our database!", e);
}
return null;
}
public void main(String[] args){
GridPane main_pane = new GridPane();
int numberOfButtons = 0;
Connection con = createInitialCon();
String line = "";
try{
PreparedStatement pstmt;
line = "SELECT num_buttons FROM `dbName`.`tableName` WHERE id = \"idOfRow\";"
pstmt = con.prepareStatement(line);
pstmt.execute();
ResultSet rs = pstmt.getResultSet();
if (rs != null) {
if (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i < rsmd.getColumnCount() + 1; i++) {
switch (rsmd.getColumnType(i)) {
case Types.INTEGER: {
numberOfButtons = rs.getInt("num_buttons");
break;
}
}
}
}
}
Button temp;
for (int i = 0; i < num_buttons; i++){
temp = new Button("Button " + i);
temp.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
//Do some stuff with the button for this listener.
}
});
pane.getChildren().add(temp);
}
}catch(IOException e){
e.printStackTrace(System.out);
}
}
}
显然这只是一个例子,我没有测试过这个,它可能会有一些语法错误,但这是一般的想法。您还需要将窗格添加到场景中,然后将场景设置为舞台以实际显示某些内容。
祝你好运!