0
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);
    }
}

当我执行此操作时,我得到的只是“这是一个句子”字符串的一个小蓝色方形嵌套。我什么都试过了!

4

1 回答 1

2

您需要将框架的布局设置为doesn't尊重其子项的首选大小的布局。FlowLayout确实如此,并且如果没有添加任何组件或指定首选尺寸,您JPanel就没有首选尺寸。

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

您可以查看此答案以查看哪些布局管理器尊重首选尺寸,哪些不尊重

在使用容器布局组件中查看更多信息

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

于 2014-03-08T12:39:58.733 回答