【问题标题】:JLayeredPane objects showing from an "hidden" panel从“隐藏”面板显示的 JLayeredPane 对象
【发布时间】:2023-04-01 06:19:01
【问题描述】:

我对 Java Swing 有疑问,尤其是 JLayeredPane。 我有一个甲板管理器,它在 JLayeredPane 中包含 4 个 JPanel,但是当我将一个对象添加到一个窗格,然后切换到另一个窗格时,这些对象首先变得不可见,但是当我打开鼠标时,它返回可见即使我'在不同的面板上,这是代码:

deckSelector = new JLayeredPane();                                                          

    Point origin = new Point(30, 0);

    for (int i = 0; i < types.length; i++) {
        Deck deck = new Deck(types[i], colors[i], origin);
        deckSelector.add(deck, i);
        decks[i] = deck;
    }

改变

int j = 0;
    boolean found = false;
    for(int i=0; i<types.length; i++){  
        if(selectors[i].isSelected()){
        deckSelector.setLayer(decks[i], 3);
                found = true;
                j=2;
            } else 
            if(!selectors[i].isSelected()){
                deckSelector.setLayer(decks[i], j);
                if(found) j--;
                else j++;
            };
            }

添加卡片:

Card btnNewButton = new Card("Name Card");
    add(btnNewButton);

我有一个牌组管理器,它是主要的 JLayerdPane,它有 4 个牌组重叠,我可以在其中添加牌,但是当我从牌组切换到另一个牌组时,牌仍然可见。谁能帮帮我?

【问题讨论】:

    标签: java swing jlayeredpane


    【解决方案1】:

    但是当我用鼠标通过时

    为组件生成 mouseOver 事件。在 JButton 的情况下,边框已更改,因此组件需要重新绘制自身。所以这就是组件变得可见的原因。

    使用 JLayeredPane 的目的是同时查看所有图层。只是某些组件将堆叠在其他组件之上。

    如果您一次只想查看一个面板,那么您应该使用Card Layout。然后,您可以在任何给定时间交换可见的面板。

    如果您认为确实需要使用 JLayeredPane,请尝试在您不想看到的面板上使用 setVisible(false)。这应该可以防止事件被传递到该层面板上的组件。

    【讨论】:

    • 感谢您的帮助,我想使用 JLayeredPane bc 我想在距离窗格本身很远的按钮之间交换窗格,并且卡片布局具有附加到窗格的按钮,我d 以其他方式使用它。我会尝试使用 setVisible(false)。
    • @GabLog, and a card layout has the buttons attached to the panes - 不,不是这样设计的。您显然没有阅读教程或下载代码并测试示例代码。
    • @GabLog,我只是在陈述一个事实。您说 CardLayout 的按钮附加到窗格。这完全不是真的,所以我正确地说明了你的说法,并告诉你阅读CardLayout 上的教程。我完全不知道“选项卡式窗格”进入对话的位置。我从来没有在我的回答中提到它。我不是读心术。我不知道您打算说什么,我只能根据您的实际陈述来建立我的cmets。根据您的陈述,您不了解CardLayout 的工作原理。所以我花了额外的时间来澄清这个问题。这才叫乐于助人!
    • @GabLog,不要忘记点击答案旁边的复选标记“接受”答案,这样人们就知道问题已经解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2020-04-19
    • 2011-03-27
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多