【发布时间】:2026-01-11 12:50:02
【问题描述】:
我启动了一个与数据库交互的 javafx 项目(添加新、编辑、删除、查找...)。
我的数据库包含很多表,每个表都需要自己的场景(几乎一样!!!)。
所以我的问题是:不是实现 ~20 fxml 文件,是否可以制作一个单独的 fxml 文件,该文件将根据传递给其控制器的类名(例如)更改其内容?
如果是,有任何提示来实现它吗?
这是我尝试过的:
为每个 TableClass 添加了一个 HashMap,其中包含场景中需要的所有属性,并在 ControllerClass 中对其进行迭代以将控件添加到场景中!!!但是失败了!
TableSampleClass:
public class TableSampleClass{
public static final HashMap<String, String> attr;
static {
attr = new HashMap<String, String>();
attr.put("ref", "text");
attr.put("name", "text");
attr.put("adress", "text");
attr.put("Mobile", "tel");
attr.put("mail", "mail");
attr.put("isalive", "checkbox");//just to illustrate what i want !
}
........
}
控制器类:
@FXML
private AnchorPane pane;
@Override
public void initialize(URL location, ResourceBundle resources)
{ Iterator it = TableSampleClass.attr.entrySet().iterator();
while(it.hasNext())
{
Map.Entry pair = (Map.Entry)it.next();
switch (pair.getValue().toString()){
case "text":
TextField txt =new TextField(pair.getValue().toString());
txt.setPromptText(pair.getKey().toString());
Label lbl =new Label(pair.getKey().toString());
pane.getChildren().add(txt);
break;
}
}
}
我希望我确实解释清楚了!!
【问题讨论】: