调整树视图图标

时间:2016-08-23 15:08:28

标签: java treeview

这是一个简单的Javafx程序代码,意图在前面有一个图标 树视图的每个节点。我面临的问题,我得到的图标太大了。如何调整大小以使所有节点具有相同的图标?

import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

@FXML
TreeView<String> treeview;
@FXML
Image icon = new Image(getClass().getResourceAsStream("/image/folder.png"));

@SuppressWarnings("unchecked")
@Override
public void initialize(URL arg0, ResourceBundle arg1) {

    TreeItem<String> root = new TreeItem<>("root", new ImageView(icon));
    TreeItem<String> nodeA = new TreeItem<>("Node A", new ImageView(icon));
    TreeItem<String> nodeB = new TreeItem<>("Node B", new ImageView(icon));
    TreeItem<String> nodeC = new TreeItem<>("Node C", new ImageView(icon));
    TreeItem<String> nodeD = new TreeItem<>("Node D", new ImageView(icon));
    TreeItem<String> nodeA1 = new TreeItem<>("A1", new ImageView(icon));
    TreeItem<String> nodeA2 = new TreeItem<>("A2", new ImageView(icon));
    TreeItem<String> nodeB1 = new TreeItem<>("B1", new ImageView(icon));
    TreeItem<String> nodeB2 = new TreeItem<>("B2", new ImageView(icon));
    TreeItem<String> nodeC1 = new TreeItem<>("C1", new ImageView(icon));
    TreeItem<String> nodeD1 = new TreeItem<>("D1", new ImageView(icon));
    treeview.setRoot(root);
    root.getChildren().addAll(nodeA, nodeB, nodeC, nodeD);
    nodeA.getChildren().addAll(nodeA1, nodeA2);
    nodeB.getChildren().addAll(nodeB1, nodeB2);
    nodeC.getChildren().addAll(nodeC1);
    nodeD.getChildren().addAll(nodeD1);``

}

2 个答案:

答案 0 :(得分:0)

除了评论:

~~&gt;您可以在不调整实际文件图像大小的情况下调整图像大小:

// resizes the image to have width and height of 100 while preserving the ratio and using
 // higher quality filtering method; this ImageView is also cached to 
// improve performance

ImageView iv2 =newImageView();     iv2.setImage(image);
iv2.setFitHeight(100);  iv2.setFitWidth(100);  iv2.setPreserveRatio(true); iv2.setSmooth(true); iv2.setCache(true);
  

~~&gt;另一种更好的方法是直接添加ImageView   SceneBuilder进入fxml:

     

JavaFX How set ImageView from SceneBuilder

答案 1 :(得分:0)

您可以这样做:

ImageView img=new ImageView(icon);
img.setFitHeight(20);
img.setFitWidth(20);
TreeItem<String> root= new TreeItem<>("Root",img);