如何在JavaFX2上下文菜单中限制MenuItem的宽度

时间:2013-06-16 18:45:27

标签: java javafx-2 contextmenu menuitem

如何限制ContextMenu的最大宽度或强制MenuItem内容的文本换行? MenuItem上没有此类属性,ContextMenu上设置pref / max / min宽度似乎不起作用。

    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"));

2 个答案:

答案 0 :(得分:4)

MenuItem有一个默认的内部Labeled组件,用于通过MenuItem.setText()显示文本集,看起来你很难(比如使用CSS id Node.lookup()选择器)到达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);

答案 1 :(得分:1)

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

    ContextMenu menu = new ContextMenu();
    menu.setStyle("-fx-max-width: your-width-value;");