Javafx 2 我们可以在JavaFx2中将一个控制器装配到一个节点上吗?
我会做这样的事情: 定义一个tablecell扩展了tablecell,我定义了一个FXML(FXML-b)来设计这个tablecell的UIJavafx 2 我们可以在JavaFx2中将一个控制器装配到一个节点上吗?,javafx-2,javafx,Javafx 2,Javafx,我会做这样的事情: 定义一个tablecell扩展了tablecell,我定义了一个FXML(FXML-b)来设计这个tablecell的UI class TableCell4Operater<T0, T1> extends TableCell<T0, T1> { ..... public TableCell4Operater(){ URL url = getClass().getResource("operpan.fxml"); //
class TableCell4Operater<T0, T1> extends TableCell<T0, T1> {
.....
public TableCell4Operater(){
URL url = getClass().getResource("operpan.fxml"); // FXML-b
FXMLLoader fxmlloader = new FXMLLoader();
fxmlloader.setLocation(url);
fxmlloader.setBuilderFactory(new JavaFXBuilderFactory());
try {
node = (Node) fxmlloader.load(url.openStream());
*// here i get the Controller from the FXML definded*
this.controller = (OperpanController) fxmlloader.getController();
}
}
}
类TableCell4Operater扩展了TableCell{
.....
公共表Cell4Operater(){
URL URL=getClass().getResource(“operpan.fxml”);//fxml-b
FXMLLoader FXMLLoader=新的FXMLLoader();
setLocation(url);
setBuilderFactory(新的JavaFXBuilderFactory());
试一试{
node=(node)fxmloader.load(url.openStream());
*//这里我从定义的FXML获取控制器*
this.controller=(OperpanController)fxmlloader.getController();
}
}
}
在类中,我可以得到节点和控制器,
但是我需要在这个TableCell类中定义控制器方法,
因为我需要控制一些对象的事件,比如按钮的onAction()事件,
我还需要将事件发布到创建这个tableCell所属的表的“主阶段”
所有要做的事情都是为了实现目标:
当我单击“主阶段”上表格单元格(定义见上文)中的按钮时,
我可以在“主舞台”上更改文本字段的文本等内容
因此,事件转移的道路是:
表格单元格中的按钮(FXML-b)->“主阶段”(FXML-a)上的表格)->“主阶段”(FXML-a)
谁能教我如何去实现,谢谢 为什么您不在fxml-a-controller中创建一个公共函数,并在fxml-b-controller中的按钮单击函数中调用它?但按下按钮时,这确实是一种状态变化。这可以通过控制器上的一个属性来表示,每个表单元格绑定一个属性。但是如何做到这一点,按钮在另一个fxml上,我不能引用“TableCell”中的按钮,因为“TableCell”(TableCell4Operater)被定义为一个标准类,它不是Controller-a中的内部类,我需要修改FXML-B的控制器-B的实例-更改按钮的点击操作函数,如下所示:Controller.getBtn1().setOnAction(neweventhandler(){@Override public void handle(ActionEvent事件){//TODO txttip.setText(“哈哈”);}};--还有别的办法吗。