簡體   English   中英

如何在FXML(JavaFX)中為按鈕定義列

[英]How to define a Column for buttons in FXML (JavaFX)

我知道由於jewelsea,可以在TableView中創建一個充滿按鈕的列。

但我想知道是否可以直接在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");

如何用Buttons實現同樣的目標?

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

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();
    }

});

由於需要單元工廠,因此無法在FXML中向表列添加按鈕。

你可以像jewelsea一樣使用Java代碼來完成它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM