2016-10-26 5 views
2

프로그래밍 연습을 위해 JSplitPane을 사용하여 오른쪽에 프랙탈 프랙탈 렌더링을하고 왼쪽에 다른 쓰레기를 표시합니다. 그러나, 나는 매우 이상한 문제를 보았습니다. 왼쪽 요소는 완전히 괜찮지 만 오른쪽 요소도 항상 왼쪽 정렬됩니다. 제가 말할 수있는 한, 오른쪽 요소는 화면의 오른쪽 부분의 크기가 주어 지지만, 왼쪽 요소는 항상 맨 위에 있고, 항상 왼쪽 요소는 그 위에 있습니다. 무엇이든 나는 내가 JSplitPane를 구축하고 (setLeftComponent 및 setRightComponent 등을 사용) 그것에 구성 요소를 추가하는 여러 가지 방법을 시도했습니다Java Swing : JSplitPane의 오른쪽 요소 정렬

splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true); 

splitPane.add(sidebar, JSplitPane.LEFT); 
splitPane.add(fractalWindow, JSplitPane.RIGHT); 

frame.add(splitPane); 

:하지만,

내가있는 JSplitPane를 작성하고 추가 요소를 다음과 같이 그렇지 않으면 두 구성 요소가 항상 왼쪽 정렬됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

EDIT : 사이드 바는 JPanel이고, fractalWindow는 JPanel의 서브 클래스입니다. 다른 JPanel에 fractalWindow를 추가하고 splitPane에 추가하려고 시도했지만 오른쪽 구성 요소가 전혀 그려지지 않았습니다. JFrame 프레임의 레이아웃을 지정하지 않았습니다.

편집 2 : 해결되었습니다. 내 Fractal 클래스는 getX()getY() 메서드를 사용하고 있었고 이러한 메서드를 재정의했다는 것을 알지 못했습니다. 일반적으로 JPanel은 항상 0을 반환하므로 JPanel은 항상 부모 구성 요소의 왼쪽 위 모서리에 배치됩니다.

+0

이것은 아마도 내 대답을 테스트 한 'fractalWindow'의 LayoutManager –

+0

으로 인한 것입니까? – ItamarG3

+0

1) 더 나은 도움을 받으려면 [MCVE] 또는 [Short, Self Contained, Correct Example] (http://www.sscce.org/)를 게시하십시오. 2) ASCII 아트 또는 GUI의 * 의도 된 * 레이아웃의 간단한 그림을 최소한의 크기로 제공하고 크기를 조정할 수 있으면 더 많은 너비와 높이를 제공하십시오. –

답변

2

당신은 오른쪽에 JPanel을 넣어 시도 할 수 있습니다, 장소 당신이 인 JPanel의 원하는 :

splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true); 

splitPane.add(sidebar, JSplitPane.LEFT); 
JPanel panel = new JPanel(); 
panel.add(fractalWindow,BorderLayout.CENTER); 
splitPane.add(panel, JSplitPane.RIGHT); 

frame.add(splitPane); 

그 방법은, 패널은 당신이 중앙에 넣어 무엇을 정렬하고, 분할 패널은 패널을 오른쪽에 놓습니다.

class Fractal extends JPanel { 

    ... 

    int xpos; 
    int ypos; 

    ... 

    public int getX() { 
     return xpos; 
    } 

    public int getY() { 
     return ypos; 
    } 

    ... 

} 

이 두 가지 방법은 JPanel에서 getX()getY()을 무시, 그것은 부모 요소의에 JPanel을의 위치를 ​​결정하는 데 사용됩니다 그것이 나오는 것에 따라

+0

그리고 이것이 해결책이라고 생각합니다 – GlacialMan

+0

OP도 그렇게 생각하길 바랍니다. – ItamarG3

0

은, 범인이 내 프랙탈 클래스의 두 가지 방법이 있었다. 그것이 정렬이 잘못 작동하게 된 원인입니다.