调整JFrame java的西侧

时间:2013-08-23 04:29:09

标签: java swing resize jframe

我目前正在尝试使用MouseListeners实现使用未修饰的JFrame调整窗口的大小。这是我实现调整JFrame东侧的一个示例。

sizeXsizeY是从程序的初始化部分获取的帧的当前大小。 bg是我的内容窗格中唯一的元素。我使用了frame.pack()

    public void mouseMoved(MouseEvent e){
        if((sizeX - 2) <= e.getX()){
            changeCursor(new Cursor(Cursor.E_RESIZE_CURSOR), true);
        }else{
            changeCursor(new Cursor(Cursor.DEFAULT_CURSOR), false);
        }

        printInfo("Moved", e);
    }
    public void mouseDragged(MouseEvent e){
        if(sizeX < e.getX() ||
                sizeX > e.getX()){
            resizeXE(e);
        }
        printInfo("Dragged", e);
    }
    void changeCursor(Cursor cursor, boolean resize){
        if(resize){
            resizeFlag = true;
        }else{
            resizeFlag = false;
        }
        bg.setCursor(cursor);
    }
    void resizeXE(MouseEvent e){
        if(resizeFlag){
            sizeX = e.getX();
            ((JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, bg)).setSize(
                    sizeX, sizeY);
        }
    }

我需要帮助尝试实施西侧的大小调整。我相信如果我弄清楚这一点,我可能不需要南北两侧的帮助。

正如您所看到的,我正在尝试使用setSize()方法调整大小。但是我不知道如何在西侧使用它。有关替代品的任何建议吗?

1 个答案:

答案 0 :(得分:3)

  

正如您所看到的,我正在尝试使用setSize()方法调整大小。

当您在西部调整大小时,您需要使用:

  1. setLocation(...) - 因为框架的边缘移动到新的地方
  2. setSize(...) - 因为尺寸也会增加。