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,然后将面板添加到框架中。