スパゲッティ生産所

コードの走り書きとかメモとか日常のこととか

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は表示されません。