也就是当鼠标按下开始拖动时,当前窗体不动,而是一个只有边框没有内容的的窗体在移动,当鼠标释放时,当前窗体位置变换到鼠标释放时,只有边框窗体的位置处.

解决方案 »

  1.   

    楼主,我想你的表述让我们错乱了
    是否就是一个无标题的窗口,但是可以移动
    若果是的话,给你一个思路,继承JWindow
    窗体为一个白板,再自己添加鼠标监听类
    来实现移动
    package com.kiritor;import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;import javax.swing.JWindow;public class PFrame extends JWindow { /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private boolean flag = false; public boolean isFlag() {
    return flag;
    } public void setFlag(boolean flag) {
    this.flag = flag;
    } private int xx;
    private int yy;
    private boolean isDraging; public PFrame() {
    } public PFrame(int x, int y) {
    setLocation(x, y);
    } public void showUI() {
    setSize(150, 150);
    setLayout(null);
    setAlwaysOnTop(true);
    addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
    requestFocus();
    isDraging = true;
    xx = e.getX();
    yy = e.getY();
    } public void mouseReleased(MouseEvent e) {
    isDraging = false;
    } @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
    setFlag(true);// 窗体内部暂时设置为不能取色
    }
    });
    addMouseMotionListener(new MouseMotionAdapter() {
    public void mouseDragged(MouseEvent e) {
    if (isDraging) {
    int left = getLocation().x;
    int top = getLocation().y;
    setLocation(left + e.getX() - xx, top + e.getY() - yy);
    }
    }
    }); setVisible(true); } public static void main(String[] args) {
    PFrame frame = new PFrame();
    frame.showUI(); }}
      

  2.   

    黑色框窗体写法的关键代码如下:
    JFrame中:
    setUndecorated(true);// remove the system border
    com.sun.awt.AWTUtilities.setWindowOpaque(this, false);// make the frame transparent
    第二行代码若编译器报错,那是因为新的JDK中去除了这个包。使用老一点的JDK,1.6或1.5就可以了。
    上述两行代码的效果是:窗口的系统边框没了,整个窗口可以变透明了。
    剩下的事,就是写一个拥有黑色边框的JPanel,加入此JFrame。
    其他的,你应该都会吧?