api - 当框架变得太小时,面板中的按钮会被隐藏

标签 api awt java

我使用一个扩展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);
}

问题图片: Normal size

smaller size

如您所见,带有 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/

相关文章:

api - 为什么 fold 在 Scala 中有以下类型?

python - 如何从选择中获取边缘索引?

ruby-on-rails - Zimbra API 入门

python - 我如何从外部 API 填充 Django 模型?

java - 当 MouseEnter 事件触发时显示弹出窗口

java - 使用卡片布局,卡片不交换?

java - 如何更改字符串中 1 个符号的颜色?

java - 为什么 Java 会尝试从堆中保留最大空间

java - 什么时候调用actionPerformed?

java - 在 Java for 循环中获取 NullPointerException