我使用一个扩展Frame
的类,并在定义新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 的按钮被隐藏。
最佳答案
As you can see the button with 26 is hidden.
是的,这是因为 FlowLayout 始终以其首选尺寸显示组件。如果没有足够的空间,则组件将换行到下一行,但不幸的是,面板的高度没有增加,因此您看不到按钮。
查看 Wrap Layout ,它就是为了处理这种情况而设计的。也就是说,它将重新计算面板的高度,以便所有按钮都显示在多行上。至少它可以与 Swing 配合使用。我从未用 AWT 测试过它,因为大多数人不再使用 AWT。
关于api - 当框架变得太小时,面板中的按钮会被隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548512/