繁体   English   中英

奇怪的setBackground()错误 - Java Swing

[英]Strange setBackground() error - Java Swing

import java.awt.*;
import javax.swing.*;

public class JFrameGUI extends JFrame 
{
    JLabel item1;
    public JFrameGUI(int l, int b , String Title)
    {
        setTitle(Title);
        setLayout(new FlowLayout());
        setSize(l, b);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        item1 = new JLabel("This is a Sentence.");
        item1.setToolTipText("This is gonna show up on hover.");
        add(item1);
    }

    public static void main(String[] args)
    {
        JFrameGUI g = new JFrameGUI(1280,720,"The End Of The Line");
        JPanel p = new JPanel();
        p.setBackground(Color.BLUE);
        g.add(p);
    }
}

当我执行此操作时,我得到的是一个小的蓝色方形嵌套到“这是一个句子”字符串。 我已经尝试了一切!

您需要将框架的布局设置为doesn't其子项的首选大小的布局。 FlowLayout可以,并且您的JPanel没有首选大小而没有添加任何组件,或指定首选大小。

一个简单的修复,将框架的布局设置为BorderLayout ,或者根本不设置布局,因为JFrame已经有一个默认的BorderLayout 请注意,您可能希望将JLabel添加到JPanel而不是JFrame 除非想将其添加到JFrame ,而不是背景JPanel ,你需要指定一个BorderLayout你不想在中心的一个位置。

您可以看到此答案,以查看哪些布局管理器尊重首选大小,哪些不符合

有关容器的布局输出组件,请参阅更多信息

此外, setVisible(true)应该是添加所有组件 最后做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM