java - 如何在 FXML (JavaFX) 中为按钮定义列

标签 java javafx javafx-2 javafx-8 fxml

我知道可以在 TableView 中创建一个充满按钮的列 thanks to jewelsea .

但我想知道是否可以直接在 FXML 中定义它。

例如,对于其他类型,可以这样做:

类人:

private final SimpleStringProperty birthDate = new SimpleStringProperty("");

然后在 FXML 中:

    <TableView fx:id="table" layoutY="50.0" prefHeight="350.0" prefWidth="600.0">
      <columns>
        <TableColumn prefWidth="79.5" text="date of birth">
            <cellValueFactory>
               <PropertyValueFactory property="birthDate" />
            </cellValueFactory>
        </TableColumn>
      </columns>
    </TableView>

可以添加这个元素:

@FXML private TableView<Person> table;
//...
table.getItems().add("12/02/1452");

如何使用按钮实现同样的效果?

最佳答案

不,你不可能用代码初始化它

class ButtonListCell extends ListCell<MyObject> {
    @Override
    public void updateItem(MyObject obj, boolean empty) {
        super.updateItem(obj, empty);
        if (empty) {
            setText(null);
            setGraphic(null);
        } else {
            setText(obj.toString());

            Button butt = new Button();
            butt.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("clicked");
                }                            
            });
            setGraphic(butt);
        }
    }
}

listview.setCellFactory(new Callback<ListView<MyObject>, ListCell>() {
    @Override
    public ListCell call(ListView<MyObject> param) {
        return new ButtonListCell();
    }

});

关于java - 如何在 FXML (JavaFX) 中为按钮定义列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047982/

相关文章:

java - 我收到错误 The method setPromptText(String) is undefined for the type TextField

java - 两个 Quartz-Worker 执行相同的作业两次

java - 从露天的 jboss 7 发送文件

java - 在tomcat上上传一个没有manager的war

java - 如何在没有可显示组件的情况下使用 Java 获得 VLC 媒体播放器?

java - 在 Netbeans 中将 JavaFx 项目转换为 .exe 和 .app

java - 使用Tomcat和Eclipse部署的网站地址

JavaFX:在 WebView img 标签中未加载本地镜像

java - 使用JavaFX图表API绘制图表图像

JavaFX MediaPlayer 使用 mp4 创建数百个线程