ここに私の問題があります.3つのパネルを持つjpanelがあります。縦区切りパネル、チャット出力パネル、チャット入力パネル。メインの jpanel である chatpanel は、mousemotionlistener を実装しており、次のコードがあります。
public void mouseMoved(MouseEvent e) {
int y = e.getY();
//change cursor look if hovering over vertical spacer
if(y >= (int)(verticalPanelSeperator.getLocation().getY()) && y <= (int)(verticalPanelSeperator.getLocation().getY() + verticalPanelSeperator.getHeight())) {
setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
}
else {
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR ));
}
}
public void mouseDragged(MouseEvent e) {
//vertical spacer can be draged up/down to change height of input/output areas
if(getCursor().getType() == Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR).getType()) {
int edge = (int)this.getLocation().getY();
int cur = e.getY();
int height = this.getHeight();
output.setHeightPercent((((double)(cur-edge))/height));
output.componentResized(new ComponentEvent(this, 1));
input.setHeightPercent((((double)(height-cur-edge))/height));
input.componentResized(new ComponentEvent(this, 2));
e.consume();
}
}
問題は、何らかの理由で、マウスを垂直パネルセパレーターの上に移動すると、サイズ変更カーソルに変わりますが、上に移動すると、ドラッグせずにサイズ変更カーソルのままになることです。さらに、print ステートメントから、マウスがチャット出力に上がると、e.getY() の値は増加せず、垂直セパレーターパネルの境界内にとどまります。チャット出力のデフォルトのマウスリスナーがチャットパネルのマウスリスナーをオーバーライドし、何もしていないようです。誰かがここで何が起こっているのか、これを修正する方法を教えてもらえますか?