Отключить фоновую панель в NetBeans - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть эти три панели в layeredPane2 как backPanel, overlayPanel и popupPanel.Когда я нажимаю кнопку, я хочу, чтобы была видна только popupPanel (та, у которой «задача создана!»), Вместе с overlayPanel серым полноразмерным окном, которое должно скрывать backPanel.экран только с backPanel видимым. enter image description here

когда я нажимаю createBtn, я получаю это: enter image description here

В левом верхнем углу я не знаю почему, но там есть кнопка и текстовое поле.Также кнопка Create не скрывается.Более того, элементы на backPanel доступны следующим образом: I can enter the text in the textField

Это мой код:

popupPanel.setVisible(true);
overlayPanel.setVisible(true);

Я пробовал backPanel.setFocusable(false);, ноэто не помогает.

Спасибо за вашу помощь!

Редактировать:

tfTitle.requestFocusInWindow();
        taDesc.setLineWrap(true);
        taDesc.setWrapStyleWord(true);
        overlayPanel.setBackground(new Color(20,20,20, 150));
        overlayPanel.setVisible(false);
        layeredPane2.moveToFront(popupPanel);
        layeredPane2.moveToBack(backPanel);
        popupPanel.setVisible(false);

Иерархия элементов -

enter image description here

1 Ответ

0 голосов
/ 21 ноября 2018

Трудно ответить на вопросы о блуждающих и видимых объектах, не видя иерархию компонентов.Это только часть ответа.

Я предполагаю, что у вас есть панель с OverlayLayout.Это обычная ловушка для определения позиции слоя Z:

add(popupPanel, 800); // Doesn't work
add(popupPanel, Integer.valueOf(800)); // Works

Вы можете предотвратить переход по нижним панелям следующим образом:

// Prevent click-through to lower layers
popupPanel.addMouseListener(new MouseInputAdapter() { });

Если вы, кроме того, хотите закрытьпанель, когда пользователь нажимает на затемненную область вне панели, вместо этого она выглядит так:

MouseListener closeAdapter = new MouseInputAdapter() {
    @Override
    public void mouseClicked(MouseEvent ignored) {
        popupPanel.setVisible(false);
    }
};
popupPanel.addMouseListener(closeAdapter);

// Prevent click-through to lower layers
taskCreatedPanel.addMouseListener(new MouseInputAdapter() { });
...