2017-03-15 5 views
0

IntelliJ 내에서 BorderLayout을 구현하려고하는데 작동하는 데 문제가 있습니다. 그것은 잘 컴파일하지만, 실행되면 뷰어를 잠시 본 다음 충돌합니다. 나는 현재이 코드는BorderLayout에 구성 요소 추가

Button Next=new Button("Next"); 
    Button Back=new Button("Back"); 
    Container panel1=new Container(); 
    Container panel2=new Container(); 
    home = new Form("Home"); 
    home.setLayout(new BorderLayout()); 
    panel1.setLayout(new BorderLayout()); 
    panel2.setLayout(new BorderLayout()); 
    home.addComponent(BorderLayout.EAST,panel1); 
    home.addComponent(BorderLayout.WEST,panel2); 
    panel1.addComponent(Next); 
    panel2.addComponent(Back); 

은 "제약 조건 매개 변수없이 BorderLayout를 컨테이너에 구성 요소를 추가 할 수 없습니다"되어 충돌 후 내가 오류입니다. 제약 매개 변수를 연구하고 IntelliJ의 BorderLayout과도 작업을 시도했지만, 내가 찾은 모든 텍스트는 도움이되지 않거나 이해하기에 너무 복잡했습니다. 정말 고마워!

답변

0

테두리 레이아웃에 구성 요소를 추가하려는 경우 배치 할 위치를 지정해야한다는 오류 메시지가 표시됩니다. 집에 구성 요소를 추가 할 때이 작업을 수행했으나 panel1panel2에 구성 요소를 추가 할 때는 그렇지 않습니다. 당신은 얻을 BorderLayout.EAST (또는 WEST, 또는 무엇이든)를 추가해야합니다

panel1.addComponent(BorderLayout.EAST, Next); 
panel2.addComponent(BorderLayout.WEST, Back); 

그러나, 당신이 잘못을 사용하고 생각합니다. panel1 또는 panel2에 테두리 레이아웃을 사용하지 않으려는 경우가 있습니다. 기본 흐름 레이아웃에서는 문제가 없으므로 panel1/2.setLayout() 행을 제거하면 코드가 제대로 작동합니다.

은 BTW : 우리는 변수의 시작 부분에 대문자를 사용하지 않는 자바에서, 그래서 NextBacknextback해야한다. 또한 panel1nextPanel과 같아야하고 panel2backPanel과 같아야합니다.

한 가지 더 추가하려면 아무도 awt를 사용하지 마십시오. 우리 모두는 (주로 html5로) 옮겼습니다. 그래서 스윙에서 이것을 시도하면 다음과 같이 나타납니다.

import javax.swing.*; 
... 
JButton next = new JButton("Next"); 
JButton back = new JButton("Back"); 
JFrame home = new JFrame("Home"); 
home.setLayout(new BorderLayout()); 
home.add(back, BorderLayout.WEST); 
home.add(next, BorderLayout.EAST); 
+0

안녕하세요, 나는 당신이 제안한 것을 시도했지만 여전히 같은 문제에 부딪 히고 있습니다. 내 새 코드는 –

+0

입니다. 버튼 다음 = 새 버튼 ("다음"); 단추 뒤 = 새 단추 ("뒤"); 컨테이너 panel1 = 새 컨테이너(); 컨테이너 panel2 = 새 컨테이너(); // 홈 페이지를 만들고 빌드하십시오. home = new Form ("Home"); home.setLayout (new BorderLayout()); panel1.setLayout (new BorderLayout()); panel2.setLayout (new BorderLayout()); home.addComponent (BorderLayout.EAST, panel1); home.addComponent (BorderLayout.WEST, panel2); panel1.addComponent (BorderLayout.EAST, Next); panel2.addComponent (BorderLayout.WEST, Back); –

+0

잘못된 정보가 있습니까? 정말 고마워! –