Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX组合框没有';无法显示来自对象的正确值_Java_Javafx_Combobox - Fatal编程技术网

JavaFX组合框没有';无法显示来自对象的正确值

JavaFX组合框没有';无法显示来自对象的正确值,java,javafx,combobox,Java,Javafx,Combobox,我在项目中使用JavaFX、Hibernate和Spring 我需要用我的对象值填充组合框。 在我的组合框中,我只需要显示模型中的标题值 我的模型课: public class Sector extends Identifier { private String title; private List<Stage> stageList; public List<Stage> getStageList() { return sta

我在项目中使用JavaFX、Hibernate和Spring

我需要用我的对象值填充组合框。 在我的组合框中,我只需要显示模型中的标题值

我的模型课:

public class Sector extends Identifier {
    private String title;

    private List<Stage> stageList;

    public List<Stage> getStageList() {
        return stageList;
    }

    public void setStageList(List<Stage> stageList) {
        this.stageList = stageList;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "Sector{" +
                "id='" + getId() + '\'' +
                "title='" + title + '\'' +
                ", stageList=" + stageList +
                '}';
    }
}

您应该使用
StringConverter
,而不是重写ListCell。这是实现相同结果的更优雅的方式

StringConverter<Sector> converter = new StringConverter<Sector>() {
    @Override
    public String toString(Sector object) {
        return object.getTitle();
    }

    @Override
    public Sector fromString(String string) {
        return null;
    }
};

你调试过了吗?setText(item.getName());这里返回一个字符串,组合框仅显示该字符串,这意味着问题不在组合框中,但“getName()”返回的值错误->模型可能未正确设置。您好,DVarga。请看我的新编辑,你是对的。保存的数据中有问题,而不是组合框中有问题。有了ItachiUchiha变体和您的建议,我已经解决了这个问题。谢谢你!
   @FXML
        public void currentSectorSelected(ActionEvent actionEvent) {
            ObservableList<Stage> observableList = FXCollections.observableArrayList(((Sector) sector.getSelectionModel().getSelectedItem()).getStageList());
            stage.setItems(observableList);
            stage.getSelectionModel().selectFirst();

            stage.setCellFactory(new Callback<ListView<Stage>, ListCell<Stage>>() {
                @Override
                public ListCell<Stage> call(ListView<Stage> param) {

                    return new ListCell<Stage>(){
                        @Override
                        public void updateItem(Stage item, boolean empty){
                            super.updateItem(item, empty);
                            if(!empty) {
                                setText(item.getName());
                                setGraphic(null);
                            } else {
                                setText(null);
                            }
                        }
                    };
                }
            });
        }
  @FXML
        public ComboBox sectorComboBox;

    @Override
        public void initialize(URL location, ResourceBundle resources) {
            sectorComboBox.setItems(FXCollections.observableArrayList(sectorService.listAll()));
        }
StringConverter<Sector> converter = new StringConverter<Sector>() {
    @Override
    public String toString(Sector object) {
        return object.getTitle();
    }

    @Override
    public Sector fromString(String string) {
        return null;
    }
};
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.StringConverter;

public class ComboBoxConverter extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {

        ComboBox<Sector> comboBox = new ComboBox<>();
        StringConverter<Sector> converter = new StringConverter<Sector>() {
            @Override
            public String toString(Sector object) {
                return object.getTitle();
            }

            @Override
            public Sector fromString(String string) {
                return null;
            }
        };
        comboBox.setConverter(converter);

        comboBox.setItems(FXCollections.observableArrayList(new Sector("Title1", 24), new Sector("Title2", 50)));
        comboBox.getSelectionModel().selectFirst();
        VBox box = new VBox(comboBox);
        box.setAlignment(Pos.CENTER);
        Scene scene = new Scene(box, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
public class Sector {
    private String title;
    private double area;

    public Sector(String title, double area) {
        this.title = title;
        this.area = area;
    }

    public double getArea() {
        return area;
    }

    public void setArea(double area) {
        this.area = area;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}