Java Swing-为什么它不再是可拖动的?
昨天我试图制作一个可拖动的、未装饰的JPanel,它工作得很好,然后今天我加载了项目,它不再工作了(我不知道为什么会发生这种情况,因为我确实妥善保存了所有东西) 任何帮助都将不胜感激:) 这是源代码: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
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,这不会有任何区别。