當我將MouseListener/FocusListener添加到其中具有BorderLayout和JComponents的JPanel時,我無法捕獲鼠標或焦點事件。有沒有什麼方法可以捕獲一個JPanel的鼠標和焦點事件有BorderLayout?具有邊框佈局的JPanel上的事件
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Application extends JFrame{
public Application(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jPanel = new JPanel(new BorderLayout());
jPanel.add(new JButton("Button"));
jPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
System.out.println("mouseExited");
}
});
// if border is set then listener works if not does not
// jPanel.setBorder(new LineBorder(Color.black, 1));
setLayout(new FlowLayout());
add(jPanel);
setSize(400, 400);
setVisible(true);
}
public static void main(String[]args){
new Application().setVisible(true);
}
}
1)你可以請張貼在http://sscce.org/形式展示您的問題(一個或多個)代碼,2)佈局管理(你的情況的BorderLayout)無關與MouseEvents – mKorbel
做但是,當我實例化一個JPanel並把它兩個jbuttons(中心和頂部)jpanel的鼠標和焦點事件不起作用 – MOD
我想這是因爲屬於組件的區域不屬於它容器。這就是爲什麼邊框佈局的容器不能放火鼠標和焦點事件因爲所有區域都屬於它的組件 – MOD