如何在JavaFX TreeItem的图标中添加填充/边距?

时间:2014-09-23 15:44:40

标签: treeview java-8 javafx-8 styling

我创建了一个TreeView并添加了一些带有自定义图标的TreeItem。图标为Dimension 16x16(取自FamFamFam)。我在某处读到了首选大小是9x9px。

所以这是我创建树的代码:

final Path folderImgPath = FileSystems.getDefault().getPath("./resources/gui/folder.png");
Image folder = SwingFXUtils.toFXImage(ImageIO.read(new FileInputStream(folderImgPath.toFile())), null);
ImageView tis = new ImageView(folder);

TreeItem<String> ti1 = new TreeItem<String>("Inbox2", tis);

TreeItem<String> rootItem = new TreeItem<String>("Inbox");
rootItem.getChildren().add(ti1);
rootItem.getChildren().add(new TreeItem<String>("Inbox3",  new ImageView(folder)));
rootItem.getChildren().add(new TreeItem<String>("Inbox4",  new ImageView(folder)));

图标'folder.png'出现在TreeView的TreeItem旁边,但是我想做的并且不知道怎么做是将图标向上移动2个像素。看一下屏幕截图:

enter image description here

Inbox2和Inbox4的图标需要在y轴上进行一些调整。我发布了处理截图并将Inbox3的图标向上移动了2个像素。红线显示细胞标记的基线。

那么你可以帮助我在代码中实现这个目标吗?

可以使用以下代码将图标缩小到9x9:

ImageView tis = new ImageView(folder);
tis.setFitWidth(9);
tis.setFitHeight(9);

比在y轴上居中但是尺寸对于FamFamFam图标来说太小了。 另一个选择是让字体更大但又一次,我也不想这样做。

THX,

1 个答案:

答案 0 :(得分:1)

对于初学者,你可以摆脱那些加载图像的Swing方法:

ImageView tis=new ImageView(
       new Image(getClass().getResourceAsStream("/resources/gui/folder.png")));

然后,您可以使用HBox包裹图像视图,将图像对齐顶部,然后使用所需高度进行播放,直到获得您正在寻找的效果(取决于尺寸)图像和字体大小):

HBox hTis=new HBox(tis);
hTis.setAlignment(Pos.TOP_CENTER);
hTis.setPrefHeight(20); // <-- Adjust this value

TreeItem<String> ti1 = new TreeItem<>("Inbox2",hTis);
...