我正在开发一个JavaFX应用程序,其中包含一个带有10个选项卡的TabPane布局。 我为每个标签设置了一张图片。
我的图像文件的大小是:2000x2000。 (https://i.ibb.co/b62HW53/info.png) 但是我将ImageView对象的大小定义为25x25。
当我的应用程序的窗口很小时,将显示允许您选择选项卡的上下文菜单。
问题:上下文菜单中的图像大小不是我在ImageView对象中设置的大小。
我试图通过CSS更改图形容器的大小。
类:Main.java
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(Main.class.getResource("View.fxml"));
Scene scene = new Scene(fxmlLoader.load());
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
Controller controller = (Controller) fxmlLoader.getController();
controller.initView();
primaryStage.show();
类:Controller.java
@FXML
private TabPane tabPane;
public void initView() {
tabPane.getStyleClass().add("my_tab_pane");
Image image = new Image(Main.class.getResourceAsStream("info.png"));
for (int i = 1; i < 11; i++) {
ImageView imageView = createImageView(image);
Tab tab = new Tab("Tab " + i);
tab.setGraphic(imageView);
tabPane.getTabs().add(tab);
}
}
private ImageView createImageView(Image image) {
ImageView imageView = new ImageView(image);
imageView.setFitWidth(25);
imageView.setFitHeight(25);
imageView.setPreserveRatio(true);
imageView.setSmooth(true);
return imageView;
}
查看:View.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller">
<children>
<TabPane fx:id="tabPane" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
CSS :application.css
.my_tab_pane .context-menu .menu-item .graphic-container {
-fx-min-width: 25px;
-fx-min-height: 25px;
-fx-pref-width: 25px;
-fx-pref-height: 25px;
-fx-max-width: 25px;
-fx-max-height: 25px;
}
很遗憾,结果如下:https://i.ibb.co/HVqyFXd/Tab-Pane-Image-For-Stack-Overflow.png。 我该怎么解决?
非常感谢。