连接Javafx:Id
我是JavaFX新手,目前正在尝试为一个学校项目做一个日历应用程序。我想知道是否有一种方法可以连接一个连接Javafx:Id,javafx,concatenation,Javafx,Concatenation,我是JavaFX新手,目前正在尝试为一个学校项目做一个日历应用程序。我想知道是否有一种方法可以连接一个fx:id这样的 @FXML private Label Box01; (In function) String ExampleNum = "01"; (Box+ExampleNum).setText("Test"); 各种可能的解决办法: 你可以用,但那会很难看,我不建议这样做 通常,如果你有很多东西,你可以把它们放在一个集合中,比如列表或数组。标签将是某个布局窗格的子级,因此您可以获
fx:id
这样的
@FXML
private Label Box01;
(In function)
String ExampleNum = "01";
(Box+ExampleNum).setText("Test");
各种可能的解决办法:
((Label) parent.getChildren().get(0)).setText("Text");
<Label text="hello" fx:id="Box01" id="Box01"/>
@FXML private Label box01;
box01.setText("Test");
旁白:除了@jewelsea提到的方法外,请按照使用驼峰箱。还有两种方法:
映射
,其中包含作为fxml值的框:
public static <T> T load(URL url) throws IOException {
FXMLLoader loader = new FXMLLoader(url);
T result = loader.load();
Object controller = loader.getController();
if (controller instanceof NamespaceReceiver) {
((NamespaceReceiver) controller).setNamespace(loader.getNamespace());
}
return result;
}
控制器
public class Controller {
private Map<String, Label> boxes;
@FXML
private Spinner<Integer> number;
@FXML
private Label box1;
@FXML
private Label box2;
@FXML
private void modify(ActionEvent event) {
boxes.get("box"+number.getValue()).setText("42");
}
}
public class Controller implements NamespaceReceiver {
private Map<String, Object> namespace;
@FXML
private Spinner<Integer> number;
@FXML
private Label box1;
@FXML
private Label box2;
@FXML
private void modify(ActionEvent event) {
((Label)namespace.get("box" + number.getValue())).setText("42");
}
@Override
public void setNamespace(Map<String, Object> namespace) {
this.namespace = namespace;
}
}
控制器
public class Controller {
private Map<String, Label> boxes;
@FXML
private Spinner<Integer> number;
@FXML
private Label box1;
@FXML
private Label box2;
@FXML
private void modify(ActionEvent event) {
boxes.get("box"+number.getValue()).setText("42");
}
}
public class Controller implements NamespaceReceiver {
private Map<String, Object> namespace;
@FXML
private Spinner<Integer> number;
@FXML
private Label box1;
@FXML
private Label box2;
@FXML
private void modify(ActionEvent event) {
((Label)namespace.get("box" + number.getValue())).setText("42");
}
@Override
public void setNamespace(Map<String, Object> namespace) {
this.namespace = namespace;
}
}
公共类控制器实现NamespaceReceiver{
私有映射名称空间;
@FXML
私有微调器数;
@FXML
自有品牌box1;
@FXML
自有品牌box2;
@FXML
私有无效修改(ActionEvent事件){
((Label)namespace.get(“box”+number.getValue()).setText(“42”);
}
@凌驾
公共void setNamespace(映射命名空间){
this.namespace=名称空间;
}
}
公共接口名称空间接收器{
公共void setNamespace(映射名称空间);
}
加载fxml的代码:
public static <T> T load(URL url) throws IOException {
FXMLLoader loader = new FXMLLoader(url);
T result = loader.load();
Object controller = loader.getController();
if (controller instanceof NamespaceReceiver) {
((NamespaceReceiver) controller).setNamespace(loader.getNamespace());
}
return result;
}
publicstatict加载(URL)引发IOException{
FXMLLoader=新的FXMLLoader(url);
T result=loader.load();
对象控制器=loader.getController();
if(NamespaceReceiver的控制器实例){
((NamespaceReceiver)controller.setNamespace(loader.getNamespace());
}
返回结果;
}
注意:如果指定了
fx:id
,但没有指定id
,则fx:id
将用作id
,这使得fxml代码中的id=“Box01”
是多余的。。。