在NetBeans中禁用背景面板

时间:2018-11-21 10:03:47

标签: java swing jlayeredpane

我在layeredPane2中拥有这三个面板,分别为backPaneloverlayPanelpopupPanel。当我单击按钮时,我只希望看到popupPanel(带有“已创建任务!”的那个)和overlayPanel灰色的全尺寸框,该框应该隐藏{{1 }}。这是起始屏幕,只有backPanel可见。enter image description here

当我点击backPanel时,我得到了: enter image description here

在左上角,我不为什么,但是有可见的按钮和文本字段。此外,createBtn按钮不会隐藏。此外,Create上的元素可以这样访问: I can enter the text in the textField

这是我的代码:

backPanel

我尝试了popupPanel.setVisible(true); overlayPanel.setVisible(true); ,但这没有帮助。

感谢您的帮助!

编辑:

backPanel.setFocusable(false);

元素的层次结构-

enter image description here

1 个答案:

答案 0 :(得分:0)

如果不查看组件层次结构,就很难回答有关杂散和可见对象的问题。这只是答案的一部分。

我假设您有一个带有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() { });