Как добавить кнопку на панель инструментов редактора - PullRequest
0 голосов
/ 23 декабря 2018

Я занимаюсь разработкой программного обеспечения для программирования на платформе Netbeans и хочу добавить кнопку на панель инструментов редактора с раскрывающимся значком и иметь возможность получать активированные узлы при нажатии кнопки или элемента раскрывающегося меню.

Мне удалось добавить кнопку с выпадающим меню и actionPerformed(ActionEvent e) при нажатии кнопки.Как я могу получить доступ к активированным узлам?

@Override
public Component getToolbarPresenter() {
    if (!isEnabled()) {
        return null;
    }

    popup = new JPopupMenu();
    populatePopupMenu();

    button = DropDownButtonFactory.createDropDownButton(
            new ImageIcon(new BufferedImage(32, 32, BufferedImage.TYPE_BYTE_GRAY)), popup);
    button.setAction(this);
    button.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                popup.show(button, 0, button.getHeight());
            }
        }
    });

    popup.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {

        @Override
        public void popupMenuCanceled(PopupMenuEvent e) {
            button.setSelected(false);
        }

        @Override
        public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
            button.setSelected(false);
        }

        @Override
        public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
            populatePopupMenu();
        }
    });

    return button;
}

private void populatePopupMenu() {
    popup.removeAll();

    JMenuItem item = new JMenuItem("Generate Code and Deploy with dependents");
    item.addActionListener(buttonListener);
    popup.add(item);
    popup.addSeparator();
}

@Override
public void actionPerformed(ActionEvent e) {
    System.out.println("Action Performed");
}

private class ButtonListener implements ActionListener {

    public ButtonListener() {
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Action performed");
    }

};
...