将组件添加到面板后未调用mouseReleased()

时间:2014-12-09 19:40:55

标签: java mouseevent panel

我正在实现自己的拖放功能,我已将问题减少到:

下面的代码可以工作,并根据需要调用mousePressed()和mouseReleased()。但是,如果取消注释 frame.add(label),则永远不会调用mouseReleased()。

JFrame frame = new JFrame();
frame.setSize(new Dimension(100, 100));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label = new JLabel("Click Me!");
label.addMouseListener(new MouseAdapter() 
{
    public void mousePressed(MouseEvent e) 
    {
        System.out.println("Pressed");
        //frame.add(label);
    {

    public void mouseReleased(MouseEvent e) 
    {
        System.out.println("Released");
    }
});

frame.add(label);
frame.setVisible(true);

为什么在将标签重新添加到框架面板后从未调用过mouseReleased()?

有办法解决这个问题吗?

0 个答案:

没有答案