여기 내 문제가 있습니다 : 나는 그것에 세 패널을 가지고있는 jpanel 있습니다. 세로 분리기 패널, chatouput 패널 및 chatinput 패널. 주요 JPanel의, chatpanel는 모든 MouseMotionListener를 구현, 다음과 같은 코드가 있습니다jtextarea 마우스 이벤트가 컨테이너 마우스 이벤트를 오버라이드
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();
}
}
문제가 당신이 verticalpanelseperator 위에 마우스를 이동할 때 어떤 이유로, 그것은 크기 조정 커서로 변경한다는 것입니다,하지만 당신은 이동 그것을 드래그하지 않고, 크기 조정 커서로 유지합니다. 또한 print 문에서 마우스가 chat 출력으로 올라갈 때 e.getY()의 값이 증가하지 않고 verticalseperatorpanel의 범위 내에있게됩니다. chatoutel의 기본 mouselistener가 chatpanel의 우선 순위를 무시하고 아무것도하지 않는 것과 같습니다. 누군가가 여기에 무슨 일이 일어나고 어떻게 해결할 수 있는지 말해 줄 수 있습니까?