Java Swing-为什么它不再是可拖动的?

Java Swing-为什么它不再是可拖动的?,java,swing,user-interface,jpanel,listener,Java,Swing,User Interface,Jpanel,Listener,昨天我试图制作一个可拖动的、未装饰的JPanel,它工作得很好,然后今天我加载了项目,它不再工作了(我不知道为什么会发生这种情况,因为我确实妥善保存了所有东西) 任何帮助都将不胜感激:) 这是源代码: import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class CustomBubble extends JFrame { public i

昨天我试图制作一个可拖动的、未装饰的JPanel,它工作得很好,然后今天我加载了项目,它不再工作了(我不知道为什么会发生这种情况,因为我确实妥善保存了所有东西)

任何帮助都将不胜感激:)

这是源代码:

import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class CustomBubble extends JFrame {

    public int xMouse;
    public int yMouse;

    JPanel pnl = new JPanel();

    public CustomBubble()
    {
        super("CustomBubble");
        setSize(150,100);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setUndecorated(true);
        setLocationByPlatform(true);
        setAlwaysOnTop(true);
        setVisible(true);

        pnl.addMouseMotionListener(
                new MouseAdapter()
                {
                    public void mouseDragged(MouseEvent e) {
                        int x = e.getXOnScreen();
                        int y = e.getYOnScreen();

                        setLocation(x - xMouse, y - yMouse);
                    }

                });
        pnl.addMouseListener(
                new MouseAdapter() {
                    public void mousePressed(MouseEvent me) {
                        xMouse = me.getX();
                        yMouse = me.getY();
                    }
                });

        add(pnl);
    }

    public static void main(String[] args)
    {
        CustomBubble gui = new CustomBubble();
    }
}

我在我的电脑上测试了这个,并让它工作了。通常
设置可见(true)语句应该是您最后要做的事情。所以只需将该语句下移到
add(pnl)之后呼叫,你应该很好

...
add(pal);
setVisible(true);
} // end of constructor

此代码运行良好。我在我的电脑里试过这个代码。没有给出任何错误。很好

package test;

import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/**
 *
 * @author ****
 */
public class Test extends JFrame {

    public int xMouse;
    public int yMouse;

    JPanel pnl = new JPanel();

    public Test()
    {
        super("CustomBubble");
        setSize(150,100);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setUndecorated(true);
        setLocationByPlatform(true);
        setAlwaysOnTop(true);
        setVisible(true);

        pnl.addMouseMotionListener(
                new MouseAdapter()
                {
                    public void mouseDragged(MouseEvent e) {
                        int x = e.getXOnScreen();
                        int y = e.getYOnScreen();

                        setLocation(x - xMouse, y - yMouse);
                    }

                });
        pnl.addMouseListener(
                new MouseAdapter() {
                    public void mousePressed(MouseEvent me) {
                        xMouse = me.getX();
                        yMouse = me.getY();
                    }
                });

        add(pnl);
    }

    public static void main(String[] args)
    {
        Test gui = new Test();
    }
}

这是节目的实际台词吗?因为它不会编译:
setDefaultCloseOperation(在关闭时退出)是的,在那里。它为我编译。我唯一的问题是,当面板显示时,我无法再在屏幕上单击并拖动它。这可能没关系,但如果您将其更改为
JFrame.EXIT_ON_CLOSE
?我将其更改为JFrame.EXIT_ON_CLOSE,这不会有任何区别。