1、setUndecorated(true)设置窗体无边框,但是setResizable(true)设置
可以通过鼠标调整大小,不起作用,这是怎么回事?
2、有没有事件,可以监听到,鼠标移动到边缘?如果java设置窗体无边框后,无
法鼠标拖动调整大小,我想自己做监听事件。

解决方案 »

  1.   

    看看这里吧:
    http://blog.csdn.net/jia20003/article/details/6663801
      

  2.   


     一定给,一定给!呵呵呵!出了点小问题,按照你的思路,用panel做的,边框很大!无法修改边框的大小。 我想要这种效果的!无标题栏,自定义边框,而且可以拖动改变大小!就想QQ面板一样!
      

  3.   

    下面是我做,很简单,但是费了老大劲了!
    1、我所提的问题,出现的这种情况;
    2、无标题栏,自定义边框,可以根据需要修改,做的简单;
    3、像QQ面板一样,需要时,可以根据需要向上加组件;
    4、可以拖动修改大小,拖动移动位置;

    源码:package test;import java.awt.Color;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.Point;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.Border;
    import javax.swing.border.CompoundBorder;
    import javax.swing.border.EtchedBorder;
    import javax.swing.border.LineBorder;public class WindowDragSize { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    final JFrame frame = new JFrame();
    frame.setUndecorated(true);
      Border b = new CompoundBorder(new EtchedBorder(),new LineBorder(Color.RED));
      final JPanel panel = new JPanel();
      panel.setSize(200,100);
      panel.setBorder(b);
      
      
      panel.addMouseMotionListener(new MouseAdapter() {
        private boolean top = false;
        private boolean down = false;
        private boolean left = false;
        private boolean right = false;
        private boolean drag = false;
        private Point lastPoint = null;
        private Point draggingAnchor = null;
                @Override
                public void mouseMoved(MouseEvent e) {
                 if(  e.getPoint().getY() == 0 ){
                 frame.setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
                 top = true;
                 }else if(Math.abs(e.getPoint().getY()- frame.getSize().getHeight()) <= 1 ){
                 frame.setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
                 down = true;
                 }else if(e.getPoint().getX() == 0 ){
                 frame.setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
                 left = true;
                 }else if(Math.abs(e.getPoint().getX()- frame.getSize().getWidth()) <=1 ){
                 frame.setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
                 right = true;
                 }else{
                 frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                 draggingAnchor = new Point(e.getX() + panel.getX(), e.getY() + panel.getY());
                 top = false;
                 down = false;
                 left = false;
                 right = false;
                 drag = true;
                 }
      
                }
                
                @Override
                public void mouseDragged(MouseEvent e) {
                 Dimension dimension = frame.getSize();
                 if(top){
                
                 dimension.setSize(dimension.getWidth() ,dimension.getHeight()-e.getY());
                 frame.setSize(dimension);
                 frame.setLocation(frame.getLocationOnScreen().x, frame.getLocationOnScreen().y + e.getY());
                 }else if(down){
                  
                 dimension.setSize(dimension.getWidth() , e.getY());
                 frame.setSize(dimension);
          
                 }else if(left){
                  
                 dimension.setSize(dimension.getWidth() - e.getX() ,dimension.getHeight() );
                 frame.setSize(dimension);
                
         
                 frame.setLocation(frame.getLocationOnScreen().x + e.getX(),frame.getLocationOnScreen().y );
                    
                 }else if(right){
                  
                 dimension.setSize(e.getX(),dimension.getHeight());
                 frame.setSize(dimension);
                 }else {
                        frame.setLocation(e.getLocationOnScreen().x - draggingAnchor.x, e.getLocationOnScreen().y - draggingAnchor.y);
                 }
                }
            });   frame.setLocation(200,100);
      frame.getContentPane().add(panel);
      frame.setSize(200,100);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.show();
      
    }}