如何定义上下文菜单图像的大小?

时间:2019-06-02 12:05:24

标签: image javafx size contextmenu

我正在开发一个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。 我该怎么解决?

非常感谢。

0 个答案:

没有答案