Рамка прячется под основной рамой - PullRequest
0 голосов
/ 09 июня 2019

У меня есть Menubar, который содержит JMenu и JMenuItems

class MenuBar implements MenuListener, ActionListener {
    private JMenu menuA;
    private JMenu menuB;
    private JMenuItem subMenuA;
    private JMenuItem subMenuB;

    public MenuBar() {
        menuB.addMenuListener(this);
        subMenuA.addActionListener(this);
        subMenuB.addActionListener(this);
        //add submenus to menuA, etc
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if(source == subMenuA) {
            new MyFrame("One")
        }
        if(source == subMenuB) {
            new MyFrame("Two")
        }

    }

    @Override
    public void menuSelected(MenuEvent e) {
        Object source = e.getSource();
        if(source == replaceMenu) {
            new MyFrame("Three")
        }
    }
}  

Теперь, когда я нажимаю subMenuA или subMenuB - он правильно открывает новый кадр.Нажатие на menuB должно иметь такую ​​же функциональность.Я понял, что не могу просто от addActionListener(this) до JMenu, поэтому вместо этого я добавляю addMenuListener(this).Дело в том, что он работает немного иначе, чем ActionListener.Оба кадра, которые я открываю, имеют одинаковую реализацию.Но если я использую ActionListener - рамка открывается и остается открытой, с другой стороны, если я использую MenuListener - она ​​открывается и затем скрывается под основной рамкой.

Вот код этих фреймов

MyFrame(String title) {
    frame = new JFrame(title);
    initComponents(frame);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setSize(new Dimension(WIDTH, HEIGHT));
    frame.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width  - frame.getSize().width) / 2),
                ((Toolkit.getDefaultToolkit().getScreenSize().height - frame.getSize().height) / 2));
    frame.setResizable(false);
    frame.setVisible(true);
}

Как избежать Frame, созданных через MenuListener::menuSelected, от скрытия под основным фреймом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...