我创建了一个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个像素。看一下屏幕截图:
Inbox2和Inbox4的图标需要在y轴上进行一些调整。我发布了处理截图并将Inbox3的图标向上移动了2个像素。红线显示细胞标记的基线。
那么你可以帮助我在代码中实现这个目标吗?
可以使用以下代码将图标缩小到9x9:
ImageView tis = new ImageView(folder);
tis.setFitWidth(9);
tis.setFitHeight(9);
比在y轴上居中但是尺寸对于FamFamFam图标来说太小了。 另一个选择是让字体更大但又一次,我也不想这样做。
THX,
答案 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);
...