当前位置: 首页 > 知识库问答 >
问题:

JavaFx:使用ObservableMap填充TableView

微生嘉祥
2023-03-14

我在互联网上找不到正确的答案,如何用ObservableMap作为MapProperty填充tableviw。我想在按值排序的tableview中显示文章。

public class Article {

    private MapProperty<String, Integer> article = new SimpleMapProperty<>(); 


        public final ObservableMap<String, Integer> geArticle() {
            return article.get();
        }

        public final void setArticle(ObservableMap<String, Integer> value) {
            article.set(value);
        }

        public MapProperty<String, Integer> articleProperty() {
            return article;
        }
    }
 public class TableController extends VBox implements Initializable{

    @FXML private TableView<Article> tableView;
    @FXML private TableColumn<Article, String> article;
    @FXML private TableColumn<Article, Integer> count;

    ......

    @Override
        public void initialize(URL location, ResourceBundle resources) {
            article.setCellValueFactory(new PropertyValueFactory<Article, String>("article"));
            count.setCellValueFactory(new PropertyValueFactory<Article, Integer>("count"));
    }
  }

共有1个答案

柴文林
2023-03-14

一种简单的方法是遍历keySet并创建一个文章列表:

ObservableList<Article> list =  FXCollections.observableArrayList();

    for(String key : article.keySet()){
        Article art = new Article(key, article.get(key));
        list.add(art);
    }

然后将表Items设置为list

而如果要对列表排序,在文章可比中实现,使用collections.sort(list);

public class Article implements Comparable<Article> {
       //...
        public int compareTo(Article compareArticle ) {

              //ascending order
              return this.value - compareArticle.getValue();
        }

    }
 类似资料:
  • 我的Java程序产生了很多数据,我用它构建了单个的ResultObject。因为只有某些结果对象会引起兴趣,所以我填充了一个可观察的HashMap 虽然映射和处理这些结果按预期工作,但我很难用该ObservableHashMap填充TableView 我的CustomObject(如果两个CustomObject具有相同的属性,只需检查JSONObject): 我的ObservableHashMa

  • 我想在中显示以下可观察地图: 其中定义如下: 我希望TableView的第一列是Map键(称之为),第二列是,第三列是myShapes。拿到钥匙。getnumSides()。我希望地图更改时TableView会自动更新。 如果可能的话,让用户可以编辑TableView的第二列和第三列,并在Map中更新这些编辑,这也是非常好的。 我已经问过stackoverflow,如何用ObservableMap

  • 我正在为一个游戏开发Javafx应用程序。我有一些数据存储在枚举中,但似乎不知道如何轻松地将数据添加到JavaFX TableView,有人能帮我一下吗。我将使用fxml为TableView设置样式。 我希望每一个枚举vallue都在一个单独的行中,在我希望的列中: 图标为图像。 按整数排序。 级别为整数。 经验值为整数。 枚举:

  • //控制器类Mainguicontroller.java

  • 因此,我试图在我的JavaFX应用程序中创建一个自定义节点,它从扩展而来,因此可以自己进行渲染。我一开始只是试着画一个文本“Hello world”在画布上,但可惜它没有出现,即使我可以通过鼠标事件处理程序确认应用程序中是否存在自定义节点。 简而言之,如果我将这个的一个新实例添加到一个

  • 我无法用地图填充TableView 我有一个类,它拥有一个以产品名称为键、以正常价格为值的地图。我创建了一个tableView,其中一列是名称,一个主列是价格,分为两列normal和new,如下所示。 我已经做了这个方法使地图成为一个可观察列表。 这就是我卡住的地方。我不知道如何用这个可观察列表填充每个单元格。我确实知道我必须以某种方式使用“setCellFactory”。有人有什么建议吗?如何制