JLabel不会更改宽度

时间:2015-11-22 15:21:02

标签: java swing jlabel

我现在编程为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);




    }

http://i.stack.imgur.com/qDfBM.png

1 个答案:

答案 0 :(得分:1)

BoxLayout尊重组件的宽度,标签以其首选宽度/高度显示。

默认情况下,JFrame使用BorderLayout。因此,只需将标签添加到框架中,而不是面板:

//panel.add(anzeige);
//fenster.add(panel);
fenster.add(panel, BorderLayout.CENTER);
fenster.add(anzeige, BorderLayout.PAGE_END);

PAGE_END约束尊重高度,但宽度等于可用空间。阅读How to Use BorderLayout上Swing教程中的部分,了解更多信息和示例。