ContextMenuの優先度の話
JavaFXでは右クリック時に出るメニューとしてContextMenuとMenuItemが用意されています。メニューをセットする場合は、出 てくる項目分のMenuItemを用意して、それをContextMenuに追加し、コントロールにContextMenuを設定します。
ListViewもコントロールなので、同様にしてContextMenuを設定することができます。この時、ListView本体と ListViewにのせたコントロールの両方にContextMenuが設定されていた場合は、後者の方が優先されます。
class SampleController implements Initializable{
@FXML
private ListView testView;
@Override
public void initialize(URL url, ResourceBundle rb) {
ContextMenu c = new ContextMenu();
MenuItem m = new MenuItem("アイテム1");
c.getItems().add(c);
testView.getContextMenu(c);
}
private void addViewItem(String str){
Label label = new Label(str);
ContextMenu c = new ContextMenu();
MenuItem m = new MenuItem("アイテム2");
c.getItems().add(c);
label.getContextMenu(c);
testView.getItems().add(label);
}
}
この場合、ListViewの項目を右クリックするとアイテム2が表示されます。アイテム1は表示されません。