2013-08-23 5 views
1

저는 현재 MouseListeners를 사용하여 장식되지 않은 JFrame으로 만든 제 윈도우의 크기 조정을 구현하려고합니다. 다음은 JFrame의 이스트 사이드 크기 조정을 구현 한 예입니다.JFrame 자바의 서쪽 크기 조정

sizeXsizeY은 프로그램의 초기화 부분에서 가져온 프레임의 현재 크기입니다. bg은 내 콘텐츠 창에서 유일한 요소입니다. 나는 frame.pack()을 사용했다.

public void mouseMoved(MouseEvent e){ 
     if((sizeX - 2) <= e.getX()){ 
      changeCursor(new Cursor(Cursor.E_RESIZE_CURSOR), true); 
     }else{ 
      changeCursor(new Cursor(Cursor.DEFAULT_CURSOR), false); 
     } 

     printInfo("Moved", e); 
    } 
    public void mouseDragged(MouseEvent e){ 
     if(sizeX < e.getX() || 
       sizeX > e.getX()){ 
      resizeXE(e); 
     } 
     printInfo("Dragged", e); 
    } 
    void changeCursor(Cursor cursor, boolean resize){ 
     if(resize){ 
      resizeFlag = true; 
     }else{ 
      resizeFlag = false; 
     } 
     bg.setCursor(cursor); 
    } 
    void resizeXE(MouseEvent e){ 
     if(resizeFlag){ 
      sizeX = e.getX(); 
      ((JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, bg)).setSize(
        sizeX, sizeY); 
     } 
    } 

서쪽의 크기 조정을 구현하는 데 도움이 필요합니다. 나는 이것이 내가 북쪽과 남쪽면에서 도움을 필요로하지 않을 것이라고 생각한다.

보시다시피 setSize() 메서드를 사용하여 크기를 조정하려고합니다. 그러나 나는 그것을 서쪽에서 어떻게 사용할 수 있는지 보지 못했다. 대안에 대한 제안 사항이 있습니까?

답변

3

제가 알 수 있듯이 setSize() 메서드를 사용하여 크기를 조정하려고합니다. 당신이 서쪽에 크기를 조정할 때

당신은 사용할 필요가 :

  1. 에서 setLocation (...) - 때문에 새로운 장소에 프레임 이동의 가장자리
  2. 에는 setSize (...) - 크기가 커지기 때문에.
+0

의미가 있습니다. 나는 실제로 이것을 피하고 있었지만 지금은 이것을 시도 할 것입니다. – kir

+0

나는 그것을 끝냈다. 그러나 it 's도. .. twitchy. 서쪽에 비해 동쪽 크기 조정은 훨씬 부드럽습니다. 이것은 분명히'setLocation'에 의해 발생합니다. 클리너 크기를 조정할 수 있습니까? – kir

+0

@ user2280704 내 구현을 위해 [컴포넌트 크기 조정] (http://tips4java.wordpress.com/2009/09/13/resizing-components/)을 참조하십시오. 스냅과 같은 다른 기능을 지원하기 때문에 사용자의 것보다 더 복잡해 지겠지만 코드를 자세히 살펴보면 몇 가지 아이디어를 얻을 수 있습니다. – camickr