java - 快照整个TableView

标签 java javafx tableview

我目前正在尝试使用快照从 TableView 创建图像,并且快照仅抓取屏幕上可见的表格 View 。我尝试过弄乱 SnapshotPreferences 视口(viewport),但这没有帮助。任何建议或解决方法将不胜感激。

编辑:我现在还尝试创建一个与 TableView 宽度和高度相同的新 Pane ,添加 TableView 并拍摄快照,但最终结果为空白。我继续玩这个。创建一个新 Pane 并将其添加到场景中将为我提供 TableView 的所有列,但不是所有行。

拍摄快照的代码如下。

WritableImage image = null;

//Get the node
TableView<ObservableList<ObjectProperty<Item>>>pattern =  mainApp.getPVController().getPattern();

//Create rectangle to define viewport
Rectangle2D rect = new Rectangle2D(0, 0, pattern.getWidth(), pattern.getHeight());

//Define snapshot parameters    
SnapshotParameters params = new SnapshotParameters();
params.setViewport(rect);

//Take the snapshot
image = pattern.snapshot(params, image);

最佳答案

好的,所以我想出了一个解决方法。我使用了TableView的底层数据,并制作了一个代表底层数据的GridPane,效果很好。我的数据是用颜色表示的,所以这就是您将在下面看到的内容。您当然可以对其他数据类型执行此操作。

现在我在改变网格线的阴影和宽度时遇到了麻烦 - 但这是另一个问题。创建 GridPane 的代码如下。

 GridPane gPane = new GridPane();
     gPane.setSnapToPixel(true);
     gPane.setStyle("-fx-background-color: DARKGREY; -fx-padding: 1;"
                    +"-fx-hgap: 1; -fx-vgap: 1;");

     for(int i=0; i<mainApp.getItemList().size(); i++){ // rows
         for(int j=0; j<mainApp.getItemList().get(0).size(); j++){ //columns

             Color color = mainApp.getItemList().get(i).get(j).getValue().getDisplayColor();
                int r = (int) (color.getRed() * 255);
                int g = (int) (color.getGreen() * 255);
                int b = (int) (color.getBlue() * 255);

             Rectangle rect = new Rectangle(5,5);

             rect.setStyle("-fx-fill: rgb(" + r + "," + g + "," + b + ");");
             gPane.add(rect, j, i);
         }
     }
        Scene scene = new Scene(gPane);
        WritableImage image = gPane.snapshot(new SnapshotParameters(), null);

关于java - 快照整个TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595096/

相关文章:

swift - 自定义 TableViews + CustomCell

java - 在 ServerSocket 和 ServerSocketChannel 中接受和绑定(bind)

java - 如何在 Android Studio 中找到方法或变量的使用位置(快捷方式)

java - 带条件的 Hibernate 调用函数

JavaFX 访问 Controller 给出空指针异常

java - 未知路径 FXML 文档

java - 将句子转换为数组并删除字符并打印新句子

java - 在 Java 中获取 MediaPlayer 的当前状态

iOS - 在滚动之前移动 TableView

ios - 无法添加一致的高度和填充。动态表格 View 单元格之间