我现在正在为 Uni 编写 Chomp 游戏。一切正常,但标签位于底部。它的背景应该填满整个底部。在附件中您可以看到它现在的样子。我尝试设置标签的最小尺寸和首选尺寸。高度正在改变,但宽度只是根据文本进行调整。我怎样才能改变它?
注意:该代码片段仅包含自定义方法中框架和面板的设置,而不包含主类。
private void init()
{
JFrame fenster = new JFrame();
this.spielfeld = new SpielfeldPanel(M, N);
this.anzeige = new SpielerAnzeigeLabel(this.spieler);
JPanel panel = new JPanel();
BoxLayout boxlayout = new BoxLayout(panel,BoxLayout.Y_AXIS);
panel.setLayout(boxlayout);
fenster.setTitle("Chomp");
fenster.setSize(1000,700);
panel.setPreferredSize(new Dimension(1000, 60));
Dimension d = new Dimension(getPreferredSize());
panel.setMinimumSize(d);
panel.add(spielfeld);
panel.add(anzeige);
fenster.add(panel);
this.spielfeld.setVisible(true);
this.anzeige.setVisible(true);
panel.setVisible(true);
fenster.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
最佳答案
BoxLayout 尊重组件的宽度,标签以其首选宽度/高度显示。
JFrame 默认使用 BorderLayout。因此,只需将标签添加到独立于面板的框架即可:
//panel.add(anzeige);
//fenster.add(panel);
fenster.add(panel, BorderLayout.CENTER);
fenster.add(anzeige, BorderLayout.PAGE_END);
PAGE_END 约束尊重高度,但使宽度等于可用空间。阅读 Swing 教程中关于 How to Use BorderLayout 的部分了解更多信息和示例。
关于java - JLabel 不会改变宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856415/