2013-06-09 1 views
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)); 
} 

하나 개의 주 패널, chatpanel이, 그 안에서, 두 개의 작은 패널, 채팅 입력 및

+2

1) 코드 블록에 일관되고 논리적 인 들여 쓰기를 사용하십시오. 코드의 들여 쓰기는 사람들이 프로그램 흐름을 이해하도록 돕기위한 것입니다. 2) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

2

정확히 말할 수 없다 채팅 출력이 있습니다 코드를 기반으로하는 작업.

출력 및 입력 장치의 치수를 수동으로 설정해서는 안됩니다. 레이아웃 관리자가 부모 컨테이너의 크기를 조정할 때 각 구성 요소의 크기를 조정하는 방법을 결정하게해야합니다.

크기 조정 코드에서 부모 컨테이너의 크기를 변경할 때 revalidate()를 호출해야합니다.

체크 아웃 Resizing Components. setAutoLayout(true)을 사용하는 한 ComponentResizer 클래스를 사용할 수 있어야합니다.

+0

내가 한 일의이면에있는 생각은 이것입니다. 채팅 입력과 채팅 출력 사이에는 구분자 패널이 있습니다. 이 패널은 마우스 이벤트를 수신하고 끌기 이벤트에서 각 패널이 있어야하는 부모 높이의 비율을 설정합니다. 그런 다음 패널의 크기 조정 메소드가 호출되어 크기가 올바르게 조정됩니다. 웬일인지, 마우스가 컴퍼넌트의 사이즈 변경보다 빨리 움직이기 (위해) 때문에, 드래그와 동기하지 않습니다. – yemista

+0

JSplitPane를 사용합니다. 구성 요소의 크기가 자동으로 조절됩니다. – camickr

관련 문제