1

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

sizeX并且sizeY是取自程序初始化部分的帧的当前大小。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()方法调整大小。但是我不知道如何在西侧使用它。对替代品有什么建议吗?

4

1 回答 1

3

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

When you resize on the west you need to use:

  1. setLocation(...) - because the edge of the frame moves to a new place
  2. setSize(...) - because the size also increases.
于 2013-08-23T04:30:58.710 回答