2012-06-04 7 views
2

개발중인 멤버십 프로그램에 4 개의 버튼 중 2x2 격자를 만들려고합니다. 내가 겪고있는 문제는 내가하는 일과 상관없이 1x4 그리드로 나타납니다. 코드는 다음과 같습니다.GridLayout 문제가 작동하지 않습니다.

private void buildStartupPanel() 
{ 
    startup = new JPanel(); 
    startup.setLayout(new GridLayout(2,2)); 
    addMember = new JButton ("Add a new member"); 
    removeMember = new JButton ("remove Member"); 
    reviewMember = new JButton ("Review a Member"); 
    reviewAll = new JButton ("Review All Members"); 
    startup.add(addMember); 
    startup.add(removeMember); 
    startup.add(reviewMember); 
    startup.add(reviewAll); 
    addMember.addActionListener(this); 
    removeMember.addActionListener(this); 
    reviewMember.addActionListener(this); 
    reviewAll.addActionListener(this); 
} 

나는 출력 결과는 다음과 같은

는 회원

검토 회원국

검토 모든 회원들 대신

을 제거 새로운 회원을 추가 표시되면

누군가가 나에게 좋은 것입니다 각각의 버튼 사이에 공백을 넣어 도움이 될 수 있다면

는 새로운 회원이 회원에게

검토 회원국 검토 모든 회원

또한

를 제거하세요!

+0

이 링크는 최소한 다음 코드를 참조하십시오. http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html 두 번째 코드 세그먼트를 참조하십시오. –

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

4

제 3의 & 4th int을 간격 띄우기를 위해 생성자에 사용하십시오. 그렇지 않으면, 여기에 잘 작동하는 것 같다 : 응답에 대한

Startup Pane

import java.awt.GridLayout; 
import javax.swing.*; 

public class StartupPanel { 

    private JComponent getStartupPanel() 
    { 
     JPanel startup = new JPanel(); 
     startup.setLayout(new GridLayout(2,2,50,5)); 
     JButton addMember = new JButton("Add a new member"); 
     JButton removeMember = new JButton("remove Member"); 
     JButton reviewMember = new JButton("Review a Member"); 
     JButton reviewAll = new JButton("Review All Members"); 
     startup.add(addMember); 
     startup.add(removeMember); 
     startup.add(reviewMember); 
     startup.add(reviewAll); 

     return startup; 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       StartupPanel sp = new StartupPanel(); 
       JOptionPane.showMessageDialog(null, sp.getStartupPanel()); 
      } 
     }); 
    } 
} 
+2

+1 : 하나의 중요한 차이점 :'JOptionPane'은'pack()'을 호출합니다; OP 코드는 그렇지 않을 수도 있습니다. – trashgod

+0

@trashgod 1) SSCCE가 보일 때까지 OP 코드가 무엇을하는지 확신 할 수 없습니다. 구성된 패널을 추가 한 직후에 pack()을 호출 할 수 있습니다. 2) 크기가 정해져 있지만 꾸러미가없는 프레임에서 빠르게 시도했습니다. 동일한 2x2 효과. - 그런데, 나에게는 OP의 4 열짜리 열이 왜 보이는지 알 수 없다. –

+0

당신은 SSCCE에 대해 옳습니다; 나는 명백한 "1x4 격자"가'JPanel'의 (기본값)'FlowLayout'을 반영 할 것이라고 추측했습니다. – trashgod

2

감사합니다! 코드에 추가 한 것은 제 2 패널이었습니다. 철자가 잘못되어 모든 것을 던졌습니다. SSCCE를 게시하는 것이 중요하다고 생각합니다. 적어도 나는 그 간격을하는 방법을 배웠다! 모두에게 감사드립니다!

+1

Andrew 앞에 답변을 수락하지 못해 죄송합니다. 저는 애플리케이션 개발 세계에 익숙하지 않고 StackOverflow에 대해서도 새로운 것입니다. 나는 너의 대답을 받아 들였다. 도와 줘서 고마워. –

관련 문제