在ListView<>中对项目进行排序

3

我有一个简单的代码,实现了从列表中将项目“注册”到文本中,目前已经可以正常运行

  final private KeyCombination ENTER           = new KeyCodeCombination(KeyCode.ENTER);
  final private KeyCombination ESC             = new KeyCodeCombination(KeyCode.ESCAPE);

  final ListView<String> listview = new ListView<>();

    final TextArea textArea = new TextArea();
    textArea.setPrefRowCount(4);
    textArea.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
      public void handle(KeyEvent event) {
        if (ENTER.match(event)) {  
          if (!textArea.getText().trim().isEmpty()) {
            String selectedItem = listview.getSelectionModel().getSelectedItem();
            if (selectedItem != null) {
              if (!selectedItem.equals(textArea.getText())) { 
                listview.getItems().set(listview.getSelectionModel().getSelectedIndex(), textArea.getText());
                listview.getSelectionModel().clearSelection();
                textArea.setText("");
                textArea.clear();
              }
            } else { // create a new item
              listview.getItems().add(textArea.getText());
              textArea.setText("");
              textArea.clear();
            }
            event.consume();
          }
        } else if (ESC.match(event)) {  // cancel edit
          textArea.clear();
          listview.getSelectionModel().clearSelection();
        } 
      }
    });

我想改变推动注册的房子,例如当添加一个项目(项目5)时,它会移到列表底部。

示例

我希望它成为第一个。

有人有解决方案吗?


这应该会有所帮助。https://dev59.com/2knSa4cB1Zd3GeqPRtts - JBeagle
没有帮助,还有其他什么问题吗? - Perco
1个回答

1
你可以在 ListView 中的任何位置添加项目:
listView.getItems().add(0, "item at first position");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接