2009-04-23 7 views
2

자바 스윙에서 크기 조정 끌기 핸들을 만드는 방법을 알아낼 수 없습니다. 무슨 뜻인지 잘 모르겠 으면이 웹 사이트의 "질문하기"페이지를 열고 텍스트 영역의 맨 아래를보십시오. 그것은 영역의 크기를 변경하기 위해 드래그 할 수있는 바를 가지고 있습니다. Java Swing에서이 작업을 수행 할 방법을 찾고 있습니다. 나는이 지점을 어디에서보아야할지조차 모른다.Java 스윙에서 끌기

도움을 주시면 감사하겠습니다.

+0

이 링크가 없습니다 – MahdeTo

+0

정말 JSplitPane을 원하십니까? 좀 더 복잡한 기능을 원한다고 생각했지만 어쩌면 그렇게해서는 안됩니다. –

+0

아니, 필요한 모든 JSplitPane했습니다. 상관없이, 귀하의 도움에 감사드립니다 mmyers. –

답변

9

내 의견으로는 스택 오버플로 게시 양식에 사용되는 드래그 핸들은 모양과 기능 모두에서 세로 JSplitPane과 가장 비슷합니다.

+0

정확히 내가 무엇을 찾고 있었습니까. 감사. –

0

아직 시작한 적은 없지만 시작을 찾고 있기 때문에 한 번만 알려 드리겠습니다.

JComponent (사용자 정의 서브 클래스 일 수도 있음) 나는 핸들을 나타낼 지점에 (아마도 사용자가 레이아웃 관리자를 조작 할 수 있다고 가정합니다. 그런 다음 MouseListenerMouseMotionListener을 추가합니다 (아마도 동일한 클래스, 하위 클래스 MouseAdapter)를 구성 요소에 추가합니다. 클릭 및 드래그가 감지되면 핸들이 첨부 된 구성 요소의 크기를 조정합니다.

그게 도움이되는가요?

0

이것은 당신이보기 시작할지도 모르는 생각입니다.

스윙에서 gui 구성 요소는 각 그래픽 요소를 그 자리에 배치 할 책임이있는 레이아웃 관리자 (LayoutManagers)를 사용합니다.

요소를 배치하는 논리가 LayoutManager에서 다른 요소까지 다양하기 때문에 약간 복잡합니다. 대부분의 경우 조합해야합니다.

LayoutManager는 일반적으로 레이아웃중인 구성 요소에 최소 크기, 최대 크기 및 기본 크기가 무엇인지 알리기 위해 쿼리합니다. 일부 림은이 정보를 완전히 무시하고, 일부는 부분적으로이 정보를 사용합니다.

글쎄, 권장되는 크기 (또는 최대치)를 준 레이아웃 관리자를 사용하여 다른 요소 위에 마우스 수신기를 추가하는 것이 좋습니다. 요소가 드래그되면 구성 요소의 최대/최소/preff 크기 (거의 대부분 JTextArea)를 프로그램 적으로 증가/감소시키고 LYM이 구성 요소의 시각적 구성을 조정하도록 할 수 있습니다.

그래서이 의사과 같습니다

단지 의사 코드의
public App { 

     private JComponent container; 
     private JComponent myTarget; 
     private JComponent dragComponent; 


     public void someWhere() { 
       container.setLayoutManager(someLayoutManager()); 
       container.add(myTarget); 
       container.add(dragComponent); 

       // warn: not actual method names, I don't remember them 
       dragComponent.addMouseListener(new MouseAdapter() { 
        public void mouseDragged(MouseEvent me) { 
          Point point me.getPoint(); 
          int h = myTarget.getHeight(); 
          int w = myTarget.getWidth(); 
          // Do some math to know if you have to add or subtract. 
          int movement = // -20, +20, whatever. 
          myTarget.setMaximumSize(h + (movement) , w); 
        } 
       }); 
     } 
} 

, 그래서 저를 쏘지 마세요.

올바른 레이아웃 관리자를 찾고 마우스 수신기를 추가하여 구성 요소가 드래그되는 위치를 알 수 있습니다. 구성 요소를 드래그 할 때마다 대상 구성 요소의 크기를 변경하고 LayoutManager에서 구성 요소의 모양을 변경하게합니다.

이 정보가 도움이되기를 바랍니다.

p.s. 스윙도 drag/drop을 지원합니다 (도움이되는지 확인하십시오).

+0

Oooorrrr ... JSplitPane => http://bit.ly/l8doc hehehe를 사용할 수 있습니다. – OscarRyz

0

다른 사람이 이미 대답 했으므로 JSplitPane을 수평 정렬로 설정하기 만하면됩니다. 분리 막대 너비를 원하는 픽셀 크기로 조정할 수 있습니다.