0

チャットパネルのサイズを動的に変更するコードがいくつかありますが、マウスに応じて移動しません。何が起こるかは、パネルのサイズが変更されるよりも速い速度でマウスが移動することです。たとえば、どのアプリケーションでも、2 つのウィンドウ間の境界をクリックしてドラッグすると、マウスはクリックしている部分にとどまり、現在これは発生していません。これが私のコードです。さらに必要な場合はお知らせください

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 つのメイン パネルであるチャット パネルがあり、その中に 2 つの小さなパネルであるチャット入力とチャット出力があります。

4

1 に答える 1

2

コードに基づいて何をしているのか正確にわかりません。

出力コンポーネントと入力コンポーネントの寸法を手動で設定しないことをお勧めします。親コンテナーのサイズが変更されたときに、各コンポーネントのサイズを変更する方法をレイアウト マネージャーに決定させる必要があります。

したがって、サイズ変更コードでは、サイズ変更時に親コンテナーで revalidate() を呼び出す必要があります。

コンポーネントのサイズ変更を確認してください。ComponentResizerを使用している限り、クラスを使用できるはずですsetAutoLayout(true)

于 2013-06-09T17:18:22.920 に答える