2016-10-31 6 views
0

여기에 제 JPanel 클래스가 있습니다. BoxLayout이 있고 단 하나의 JLabel이 추가되었습니다. 내 JLabel은 화면의 왼쪽에 있습니다. BoxLayout에있는 모든 구성 요소를 중앙에 정렬하는 방법이 있습니까? 나는 이것을 시도했다 : setAlignmentX (CENTER_ALIGNMENT); 하지만 모두의JPanel의 레이아웃을위한 정렬 방법

public class MainPanel extends JPanel 
{ 
// This layout we will use as our base layout. 
private BoxLayout mainLayout = new BoxLayout(this, BoxLayout.Y_AXIS); 

// This we will use to control padding in our main panel 
EmptyBorder mainBorder = new EmptyBorder(10, 10, 10, 10); 

private JLabel title = new JLabel("Podesavanja"); 


public MainPanel() 
{ 
    setLayout(mainLayout); 
    setBackground(Color.GRAY); 
    setAlignmentY(CENTER_ALIGNMENT); 

    // Setting padding 
    setBorder(mainBorder); 
    add(title); 
} 

// Dodajemo sve Ostale panele u ovu main panelu 

public static void addPanel(JPanel panel) 
{ 
    addPanel(panel); 
} 
} 
+0

모든 변수 변형을 별도로 설정할 수있는 옵션이 있다는 것을 알고 있습니다. 레이아웃 내부의 모든 요소에 대해이를 수행 할 수있는 방법이 있습니까? –

답변

2

먼저 작동 나던 대신 setAlignmentX()setAlignmentY() 호출합니다. 둘째, JLabel에서 호출하는 대신 패널에서 호출하는 것입니다.

두 버그를 수정하면 레이블이 중앙에 배치됩니다.

+0

전체 레이아웃을 가운데 정렬 할 방법이 있습니까? layout.setAligment()와 마찬가지로 레이아웃의 모든 요소를 ​​정렬합니까? –

+0

나는 당신이 의미하는 바를 절대적으로 확신하지는 못합니다. 패널에서 addAndSetAlignmentX() 메소드를 정의하지 못하게하여 그 이름이 말하는 것을 수행하지 않습니다. –

2

레이아웃 내부의 모든 요소에 적용 할 수있는 방법이 있습니까?

BoxLayout을 포함하지 않음. BoxLayout은 개별 구성 요소의 정렬을 사용합니다.

당신은 다른 레이아웃 매니저를 사용할 수 있습니다

  1. GridBagLayout 당신이 GridBagConstraint를 사용하여 정렬을 설정 할 수 있습니다. 정렬을 한 번 설정하면 모든 구성 요소에서이 정렬이 사용됩니다. 물론 각 구성 요소의 gridY를 설정해야합니다. BoxLayout의 x 정렬을 설정하는 것과 다른 점은 무엇입니까?

  2. Relative Layout과 같은 3 부 레이아웃 관리자를 사용할 수 있습니다.

구성 요소를 가로 또는 세로로 배치 할 수 있다는 점에서 BoxLayout과 유사하게 작동합니다. 그러나 RelativeLayout을 사용하면 패널 전체 정렬을 지정할 수 있습니다.

RelativeLayout rl = new RelativeLayout(RelativeLayout.Y_AXIS); 
rl.setAlignment(RelativeLayout.CENTER); 
JPanel panel = new JPanel(rl);