java - JLabel 不会改变宽度

标签 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);




    }

/image/qDfBM.png

最佳答案

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/

相关文章:

java - JSch session 连接

java - 将 findViewById 从 Java 转换为 Kotlin

java - 找出 java.util.Date 和 Joda-Time DateTime 之间的天数差异?

java - 如何同时显示2个不同的面板?

java - 从 JTextField 获取字符串输入并将该字符串设置为 JLabel

Java 通过 for 循环更新 jLabel.setText

java - 将新组件添加到在另一个类中创建的 JPanel

java - java.nio 对 Web 服务器有什么好处?

java - JFrame不显示

java - JFrame更新问题