gpt4 book ai didi

javafx-2 - 带有自定义项的 JavaFx 2 ChoiceBox

转载 作者:行者123 更新时间:2023-12-05 09:23:39 24 4
gpt4 key购买 nike

我有一个类,例如:

public class myClass{

int age;
String name;

public String toString(){
return name;

};
}

public static ObservableList<myClass> myClassList;

请问有没有可能

ChoiceBox<myClass> choiceChart = new ChoiceBox<>(myClassList);

谢谢

PS 我想有一个类似的情况

Rendering a POJO with JavaFX 2

但使用一个选择框

编辑:

这是我的情况:我有一个 tableView,在其中一列中,我必须使用 toString() 方法从 myClass 类型的对象设置一个 String。

我已经尝试使用这些方法(其中 myClass --> CustomInternalWindow 类)

public static class Indicators{
private final SimpleStringProperty tool_col;
private final SimpleStringProperty chart_col;
private final SimpleStringProperty pane_col;
private final SimpleBooleanProperty on_col;

private Indicators(String tl, CustomInternalWindow chrt, String pne, Boolean sel){
this.tool_col = new SimpleStringProperty (tl);
if (chrt == null) {
this.chart_col = null;
}
else {
this.chart_col = new SimpleStringProperty (chrt.toString());
}
this.pane_col = new SimpleStringProperty (pne);
this.on_col = new SimpleBooleanProperty (sel);

}
public String getTool(){
return tool_col.get();
}
public void setTool(String tl){
tool_col.set(tl);
}
...

public SimpleBooleanProperty onProperty() {
return on_col;
}
public SimpleStringProperty toolProperty(){
return tool_col;
}
public SimpleStringProperty chartProperty(){
return chart_col;
}
public SimpleStringProperty paneProperty(){
return pane_col;
}
}

  tablecolumnFrame.setCellFactory(new Callback<TableColumn<Indicators, CustomInternalWindow>, TableCell<Indicators, CustomInternalWindow>>(){
@Override
public TableCell<Indicators, CustomInternalWindow> call(TableColumn<Indicators, CustomInternalWindow> param){
TableCell<Indicators, CustomInternalWindow> cell = new TableCell<Indicators, CustomInternalWindow>(){

@Override
public void updateItem(CustomInternalWindow item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
ChoiceBox<CustomInternalWindow> choiceChart = new ChoiceBox<>(newprojectx.NewProjectXController.windowsPlotted);
choiceChart.setConverter(new CustomInternaWindowStringConverter());
choiceChart.getSelectionModel().select(item);
choiceChart.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<CustomInternalWindow>() {
@Override
public void changed(
final ObservableValue<? extends CustomInternalWindow> ov, final CustomInternalWindow oldValue, final CustomInternalWindow newValue) {
if (!isEditing()) {
final TableView table = getTableView();
if (table != null) {
table.edit(getTableRow().getIndex(), getTableColumn());
}
}
commitEdit(newValue);
}
});
setGraphic(choiceChart);
}
}
};
return cell;
}
});

但我无法显示 windowsPlotted 列表中的字符串

更新:我仍在努力解决这个问题,非常感谢任何帮助或建议。

最佳答案

您可以指定 StringConverter在您的 myClass 实例和 ChoiceBox 中显示的值之间进行转换。

这是通过 setConverter() 完成的方法。

例如:

ChoiceBox<myClass> choiceChart = new ChoiceBox<>();
choiceChart.setConverter(new MyClassConverter());
choiceChart.setItems(myClassList);

class MyClassConverter extends StringConverter<myClass> {

public myClass fromString(String string) {
// convert from a string to a myClass instance
}

public String toString(myClass myClassinstance) {
// convert a myClass instance to the text displayed in the choice box
}
}

关于javafx-2 - 带有自定义项的 JavaFx 2 ChoiceBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19691533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com