2014-07-12 5 views
1

BorderLayout.CENTER를 사용하고 있지만 내 단추 그룹은 여전히 ​​패널의 북쪽에 정렬되어있는 것처럼 보입니다. BorderLayout.SOUTH를 사용하면 상대 위치는 BorderLayout.CENTER와 같지만 패널의 남쪽에 있습니다.패널에서 단추를 중앙에 배치하는 방법

패널 중앙에 표시하려면 어떻게해야합니까?

눈부신 문제가 있습니까?

public void createExecuteArea() { 

     JButton connectButton = new JButton("Connect"); 
     connectButton.setPreferredSize(new Dimension(100, 40)); 
     JButton disconnectButton = new JButton("Disconnect"); 
     disconnectButton.setPreferredSize(new Dimension(100, 40)); 
     JButton abortButton = new JButton("Abort"); 
     abortButton.setPreferredSize(new Dimension(100, 40)); 

     executePanel = new JPanel(); 
     executePanel.setLayout(new BorderLayout()); 

     JPanel buttonPanel = new JPanel(); 

     buttonPanel.add(connectButton); 
     buttonPanel.add(disconnectButton); 
     buttonPanel.add(abortButton); 

     executePanel.add(buttonPanel, BorderLayout.CENTER); 
    } 

내 코드가 다음과 같이 변경되어 내 문제가 해결되었습니다.

public void createExecuteArea() { 

     JButton connectButton = new JButton("Connect"); 
     connectButton.setPreferredSize(new Dimension(100, 40)); 
     JButton disconnectButton = new JButton("Disconnect"); 
     disconnectButton.setPreferredSize(new Dimension(100, 40)); 
     JButton abortButton = new JButton("Abort"); 
     abortButton.setPreferredSize(new Dimension(100, 40)); 

     executePanel = new JPanel(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 

     JPanel buttonPanel = new JPanel(); 

     buttonPanel.add(connectButton); 
     buttonPanel.add(disconnectButton); 
     buttonPanel.add(abortButton); 

     executePanel.add(buttonPanel, c); 
    } 

답변

1

문제는 executePanel과 사용중인 레이아웃에 있습니다. 명시 적 레이아웃을 제공하지 않으므로 기본적으로 BorderLayout을 사용합니다. 이 JPanel 내에 버튼을 중앙에 배치하려면 다른 레이아웃 (아마도 GridBagLayout)을 사용해보십시오.

보다 구체적인 도움이 필요하면 minimal example program 작성 및 게시를 고려하십시오.

관련 문제