Javafx:如何将唯一元素添加到Listview中(即重复元素被跳过)



我是javafx的新手,我想在javafx中使用带有唯一元素的列表,我可以如何管理它。显示列表的内容视图应该是唯一的重复值,跳过该值。谢谢

static ObservableList<String> items = FXCollections.observableArrayList();
static ObservableList<String> bamitems = FXCollections
        .observableArrayList();
static ListView<String> list;
static ListView<String> listforbam;
public static void test() throws Exception {
    HBox root = new HBox();
    VBox yesaccordion = new VBox();
    Accordion acc = new Accordion();
    acc.getPanes().addAll(createPanes());
    yesaccordion.getChildren().add(acc);
    root.getChildren().addAll(yesaccordion);
    jfxpanel.setScene(new Scene(root, 200, 100));
    panel.add(jfxpanel);
    items.addAll(LoadVCFFileToTrack.destitemlist);
    bamitems.addAll(LoadVCFFileToTrack.destitemBamlist);

    if (LoadVCFFileToTrack.destitemBamlist.size() > 0) {
        listforbam = new ListView<String>();
        listforbam.setItems(bamitems);
    }
    if (LoadVCFFileToTrack.destitemlist.size() > 0) {
        list = new ListView<String>();
        list.setItems(items);
    }

使用Set或更好的ObservableSet来存储要在ListView中显示的项目。

要将集合添加到列表视图中,可以使用FXCollections.observableArrayList(Collection col)方法。它将把ObservableSet转换为ObservableArrayList

listView.setItems(FXCollections.observableArrayList(observableSet));

完整示例

public class Main extends Application {
    @Override
    public void start(Stage stage) {
        ObservableSet<String> observableSet = FXCollections.observableSet();
        //Item1 is repeated twice
        observableSet.addAll(Arrays.asList("Item1","Item2","Item3", "Item1"));
        ListView<String> listView = new ListView<>();
        listView.setItems(FXCollections.observableArrayList(observableSet));
        stage.setScene(new Scene(listView, 200, 200));
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

最新更新