2013-03-17 1 views
0

저는 2 개의 JPanels, 1 개의 버튼 패널 및 1 개의 그래픽 패널을 가지고 있습니다. 버튼 패널을 그래픽 패널 바로 아래에 배치하고 싶지만 버튼 패널은 그래픽 패널을 중간에 자릅니다. 나는 토론에서 보이는 상자 레이아웃을 시도해 왔는데, 내가하려고하는 것에 대한 최상의 형식처럼 보입니다. 누구든지 내 서식 문제에 대한 조언을 해줄 수 있습니까? 당신이 구성 요소의 setSize() 메서드를 호출하지 않을 것 때문에JPanel 형식 문제

JFrame canvas = new JFrame("Baseball Strike K"); 


    JFrame canvas = new JFrame ("GraphicBoard"); 
     canvas.setVisible(true); 
     canvas.setSize(1000,1000); 
     canvas.setDefaultCloseOperation(EXIT_ON_CLOSE); 
//create two panels 
//add them to contentPane 

//set Layout 
     JPanel buttonPanel = createButtons(); 
     JPanel mainPanel = new Graphic(); //extends JPanel and writes the paint method 
     mainPanel.setSize(1000, 1000); 

     Container content = canvas.getContentPane(); 
     content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS)); 
     content.add(mainPanel); 
     content.add(buttonPanel); 
+1

코드가 충분하지 않습니다. 최소한 Graphic과 createButtons를 볼 필요가 있습니다. 실행 가능한 예제도 매우 유용 할 것입니다. – MadProgrammer

+0

Eclipse IDE에서 WindowBuilder를 살펴보십시오. 돌아 보지 않을거야. – Java42

+1

1) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 2) JPanel을 확장하고 paint 메소드'Should be ..'the paintComponent 메소드를 작성한다. (예 : 여러 JFrame의 사용, 좋고 나쁜 관행?) (http://stackoverflow.com/a/9554657/418556) ' –

답변

1
mainPanel.setSize(1000, 1000); 

레이아웃 매니저의 작업은, 구성 요소의 크기를 결정하는 것입니다.

대신 크기가 무엇인지 레이아웃 관리자에게 알려줍니다. 적절한 값을 리턴하기 위해 getPreferredSize() 메소드를 대체하여이를 수행 할 수 있습니다. 또한, 더 합리적인 크기 (1000, 1000)를 선택하면 대부분의 화면에 약간 큰 표시가됩니다. 페인팅 영역을 이렇게 크게하려면 JScrollPane에 페인트 패널을 추가 한 다음 프레임에 스크롤 패널을 추가합니다.

BoxLayout을 사용하여 코드가 작동하도록하십시오. 그렇다면 더 나은 레이아웃 관리자가 BorderLayout을 사용하는 것이 좋습니다. 그런 다음 CENTER에 페인트 패널을 추가하고 SOUTH에 버튼을 추가합니다. 이제 프레임 크기를 조정하면 페인트 패널의 크기가 조정됩니다.

canvas.setVisible(true); 

또한 해당 코드 줄의 배치가 잘못되었습니다. 프레임을 보이기 전에 먼저 모든 구성 요소를 프레임에 추가해야합니다.