0

我有一些代码可以动态调整聊天面板的大小,但它不会根据鼠标移动。发生的情况是鼠标移动的速度比面板调整大小的速度更快。例如,我希望它是怎样的,在任何应用程序中,当您单击两个窗口之间的边界并拖动它时,鼠标会与您正在单击的部分保持一致,目前这种情况不会发生。这是我的代码。如果您需要更多,请告诉我

public void mouseDragged(MouseEvent e) {
    if(getCursor().getType() == Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR).getType()) {
        owner.adjust((int)MouseInfo.getPointerInfo().getLocation().getY());
        System.out.println("vertpanel: "+(int)MouseInfo.getPointerInfo().getLocation().getY());
    }
}
public void adjust(int adjustment) {
int height = this.getHeight();
    System.out.println((((double)(adjustment))/height)+":"+(((double)(height-adjustment))/height));
output.setHeightPercent((((double)(adjustment))/height));
output.componentResized(new ComponentEvent(this, 1));
input.setHeightPercent((((double)(height-adjustment))/height));
input.componentResized(new ComponentEvent(this, 2));
}

有一个主面板,一个聊天面板,其中有两个较小的面板,一个聊天输入和一个聊天输出

4

1 回答 1

2

根据您的代码,无法准确判断您在做什么。

我建议您不要手动设置输出和输入分量的尺寸。您应该让布局管理器确定在调整父容器大小时如何调整每个组件的大小。

因此,在您调整大小的代码中,您需要在调整大小时在父容器上调用 revalidate()。

查看调整组件大小ComponentResizer只要您使用setAutoLayout(true).

于 2013-06-09T17:18:22.920 回答