簡體   English   中英

為什么JPanel下的JButton仍然會做出反應?

[英]Why does a JButton under a JPanel still react?

我四處尋找我的問題,我找不到答案,所以我走了:

我有一個JLayeredPane,在那里有2個JPanels。 最深的一個(最下面)有JButton。 第二個(頂部的那個)具有部分透明的背景顏色(雖然我認為這不應該影響它)。

現在,當我將鼠標懸停在我的JButtons(后面是另一個JPanel)上時,它們仍會向我添加到它們的MouseListener激活事件。 我不知道為什么......

為什么會這樣? 我該怎么辦才能讓它停下來?

在這里,我將兩個面板添加到分層窗格,這指的是擴展JFrame的我的類。

    JLayeredPane layer = this.getLayeredPane();
    layer.removeAll();

    this.gamePanel = new GamePanel(game);


    this.ghostPanel = new GhostPanel();
    this.ghostPanel.setOpaque(true);
    this.ghostPanel.setVisible(true);

    layer.add(this.gamePanel, new Integer(0));
    layer.add(this.ghostPanel, new Integer(1));

這里我有一些按鈕(帶有絕對布局)添加到最下面的面板

    this.setLayout(null);
    for (int j = 0; j < 5; j++) {
        for (int i = 0; i < 5 + j; i++) {
            this.add(this.buttons[i][j]);
        }
    }
    for (int j = 1; j < 5; j++) {
        for (int i = j; i < 9; i++) {
            this.add(this.buttons[i][4 + j]);
        }
    }

這里指的是最底層的JPanel

這個游戲的目的是一個名為gipf的游戲,我使用的布局是絕對的,因為很難將所有內容對齊成六邊形。

現在,當我將鼠標懸停在我的JButtons(后面是另一個JPanel)上時,它們仍會向我添加到它們的MouseListener激發事件

當生成需要傳遞給組件的事件時,Swing從父/子層次結構的底部搜索到頂部,直到找到想要處理該事件的組件。

我該怎么辦才能讓它停下來?

MouseMotionListener添加到頂部面板以攔截mouseEntered / mouseExited等事件。 這樣,您仍然可以在其他面板中處理按鈕點擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM