Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 杰拉贝尔没有出现?_Java_Swing_Jframe_Jlabel_Jcomponent - Fatal编程技术网

Java 杰拉贝尔没有出现?

Java 杰拉贝尔没有出现?,java,swing,jframe,jlabel,jcomponent,Java,Swing,Jframe,Jlabel,Jcomponent,我最初创建了一个JLabel对象,并将其添加到JFrame中,但内容没有显示出来。我在stackoverflow上找到了一篇文章,使用容器在JFrame上显示JLabel。我也尝试过,但即使这样也没有效果。我浏览了很多帖子,但找不到任何解决方案。这个按钮正在显示,但Jlabel不在可见的位置 Dimension s=new Dimension(400,400); JFrame l=new JFrame(); l.setSize(s); l.setResizable(tru

我最初创建了一个
JLabel
对象,并将其添加到
JFrame
中,但内容没有显示出来。我在
stackoverflow
上找到了一篇文章,使用容器在
JFrame
上显示
JLabel
。我也尝试过,但即使这样也没有效果。我浏览了很多帖子,但找不到任何解决方案。这个按钮正在显示,但Jlabel不在可见的位置

Dimension s=new Dimension(400,400);
    JFrame l=new JFrame();
    l.setSize(s);
    l.setResizable(true);
    Dimension s1=new Dimension(100,100);
    Container me=new Container();
    JLabel kingsman=new JLabel ("kingsman");

    me.add(kingsman);
    l.add(me);

    JButton p=new JButton("Goal"); 
    p.setSize(s1);
    l.add(p);
    //l.pack();
    l.setVisible(true);
还有一个问题。当我调用
pack()
函数时,
Jframe
将缩小为一个小窗口,而不是我提到的维度。
请帮忙

标签未显示的原因是
JFrame
的内容窗格使用
BorderLayout
作为其
LayoutManager
。当您调用
l.add(me)
然后调用
l.add(p)
时,实际上是在用按钮替换
容器
实例。尝试将您的
容器
更改为
JPanel
,将标签和按钮组件添加到该容器中,然后将其添加到框架的内容窗格中。通读

下面的示例显示一个
JPanel
包含
JLabel
JButton
JPanel
默认
LayoutManager
FlowLayout

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel content = new JPanel();
    content.add(new JLabel("A Label"));
    content.add(new JButton("A Button"));

    frame.add(content);
    frame.pack();
    frame.setVisible(true);

如果我不使用容器直接将Jlabel添加到框架中会发生什么情况?@MathewsMathai Nothing(或者更确切地说,是同一件事),
JFrame
是一个容器(实际上,它有一个
JRootPane
,它有一个
contentPane
并向其中添加内容),如果您希望直接添加到框架中,您必须应用一些位置约束。如上所述,正在使用的
LayoutManager
是一个
BorderLayout
,因此您可以不调用
frame.add(label)
frame.add(button)
而执行
frame.add(label,BorderLayout.NORTH)
frame.add(button,BorderLayout.center)
。从设计的角度来看,我建议为您的内容使用带有适当
LayoutManager
的JPanel,然后将面板添加到框架中。