簡體   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