1

如何限制ContextMenu菜单项内容的最大宽度或强制文本换行?没有这样的属性,MenuItem并且设置 pref/max/min 宽度ContextMenu似乎不起作用。

    ContextMenu contextMenu = new ContextMenu();
    contextMenu.setPrefWidth(200.0);
    contextMenu.setMinWidth(PopupControl.USE_PREF_SIZE);
    contextMenu.setMaxWidth(PopupControl.USE_PREF_SIZE);
    contextMenu.getItems().add(new MenuItem("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"));
4

2 回答 2

4

MenuItem有一个默认的内部组件Labeled,用于显示通过 设置的文本MenuItem.setText(),并且您似乎很难(例如Node.lookup()通过 CSS id 选择器使用)来访问它Labeled并对其进行操作。幸运的是,相反的方式更容易,而且我认为一点也不疼。另一种方法是使用MenuItem.setGraphic()

Label lbl = new Label("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua");
lbl.setPrefWidth(50);
lbl.setWrapText(true);

MenuItem menuItem = new MenuItem();
menuItem.setGraphic(lbl);

contextMenu.getItems().add(menuItem);
于 2013-06-16T23:17:26.363 回答
1

您可以使用以下方法设置 ContextMenu 的 CSS 样式:

    ContextMenu menu = new ContextMenu();
    menu.setStyle("-fx-max-width: your-width-value;");
于 2017-08-28T03:34:41.350 回答