调整代码大小与鼠标移动不一致

时间:2013-06-09 17:04:57

标签: java swing resize awt mouse

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

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));
}

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

1 个答案:

答案 0 :(得分:2)

无法根据您的代码确切知道您在做什么。

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

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

结帐Resizing Components。只要您使用ComponentResizer,就可以使用setAutoLayout(true)类。

相关问题