Lorsque j'ajoute un MouseListener/FocusListener à un JPanel qui a un BorderLayout et JComponents, je ne peux pas attraper les événements mouse ou focus. Yat-il un moyen d'attraper la souris d'un JPanel et les événements de mise au point qui a un BorderLayout?Événements sur un JPanel qui a une disposition de bordure
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) pouvez-vous s'il vous plaît poster le code qui démontrent votre question (s) sous forme de http://sscce.org/, 2) LayoutManager (dans votre cas BorderLayout) n'a rien à faire avec MouseEvents – mKorbel
Mais quand j'instancie un JPanel et y met deux jbuttons (au centre et en haut) la souris et l'évènement focus de jpanel ne fonctionnent pas – MOD
Je suppose que c'est parce que la zone qui appartient au composant n'appartient pas à son récipient. C'est pourquoi le conteneur de mise en page frontière ne peut pas déclencher la souris et l'événement focus parce que toute la zone appartient à ses composants – MOD