2013-12-12 2 views
0

클래스를 사용하여 extends Frame 클래스를 사용하고 새 프레임의 모든 권한을 정의한 후 생성자에서 BorderLayout.SOUTH 새 버튼 Panel을 추가합니다.프레임이 너무 작아지면 패널의 버튼이 숨겨집니다.

프레임의 크기를 줄이면 단추 공간이 충분하지 않아 프레임에서 일부가 사라집니다.

이 문제를 어떻게 해결할 수 있습니까? 문제의

public AdventureUI(Tappa tappa){ 
setTitle("Adventure Game"); 
//DIMENSIONE STANDARD DELLA FINESTRA  
setSize(700,500); 
setMinimumSize(new Dimension(400,300)); 
pannelloPrincipale = new Panel(new BorderLayout()); 
pannelloBottoni = new Panel(); 
testoTappa = new TextArea(tappa.toString(),25,50,TextArea.SCROLLBARS_NONE); 
testoTappa.setEditable(false); 
testoTappa.setBackground(new Color(211,211,211)); 
areaUtente = new TextArea("",25,30,TextArea.SCROLLBARS_VERTICAL_ONLY); 
    //ADD BUTTONS TO PANEL 
setBottoni(pannelloBottoni,tappa.getTappeCollegate()); 
//AGGIUNGIAMO ELEMENTI AL PANNELLO PRINCIPALE 
pannelloPrincipale.add(testoTappa,BorderLayout.CENTER); 
pannelloPrincipale.add(areaUtente,BorderLayout.EAST); 
//AGGIUNGIAMO PANNELLI AL FRAME 
add(pannelloPrincipale,BorderLayout.CENTER); 
add(pannelloBottoni,BorderLayout.SOUTH); 
// ASCOLTATORE FINESTRA 
addWindowListener(new AdventureUIListener()); 
setVisible(true); 
} 

이미지 : 당신이 26 버튼이 숨겨져 볼 수 있듯이 Normal size

smaller size

.

+0

더 많은 코드를 표시 할 수 있습니까? –

+0

프레임의 생성자를 추가합니다. – rkpasia

+0

크기를 설정하면 안됩니다. 그냥'pack()' –

답변

1

26 버튼이 숨겨져 있습니다.

예, 이는 FlowLayout이 항상 원하는 크기로 구성 요소를 표시하기 때문입니다. 공간이 충분하지 않으면 구성 요소가 다음 줄로 넘어 가고 불행히도 패널의 높이가 증가하지 않으므로 단추가 표시되지 않습니다.

Wrap Layout을 확인하십시오.이 상황을 처리하도록 설계되었습니다. 즉, 모든 버튼이 여러 줄에 표시되도록 패널 높이를 다시 계산합니다. 적어도 Swing과 함께 작동합니다. 대부분의 사람들이 AWT를 더 이상 사용하지 않기 때문에 AWT로 테스트 한 적이 없습니다.

+0

답변을 주셔서 감사하지만 java 공식 api 만 사용해야합니다. – rkpasia

+0

@RiccardoPasianotto의 경우, JDK에 포함 된 레이아웃이 없기 때문에 자동으로 구성 요소를 다음 줄로 감싸기 때문에 문제를 해결할 수 없습니다. – camickr

+0

나는 다음 줄을 원한다고 결코 말하지 않는다 ... – rkpasia

관련 문제