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);
}
}
当我执行此操作时,我得到的只是一个小的蓝色方形嵌套到“这是一个句子”字符串。我已经尝试了一切!
答案 0 :(得分:2)
您需要将框架的布局设置为doesn't
尊重其子项的首选大小的布局。 FlowLayout
会这样做,而JPanel
没有首选大小而没有添加任何组件,或指定首选大小。
一个简单的修复,将框架的布局设置为BorderLayout
,或者根本不设置布局,因为JFrame
已经有默认BorderLayout
。请注意,您可能希望将JLabel
添加到JPanel
而不是JFrame
。除非您 想要添加JFrame
而不是后台JPanel
,否则您需要为您不想要的位置指定BorderLayout
位置中心。
您可以看到this answer以查看哪些布局管理器尊重首选尺寸,哪些不符合
在Layout out Components Withing a Container
了解详情此外,setVisible(true)
应该是在添加所有组件之后 的事情。