Java,为什么我无法显示两个Jlabel对象?

我创建了两个Jlabel对象,一个文字,一个图片用作背景。但是调用了add方法后,Jframe只显示了用作背景的Jlabel对象,文字的没显示啊... 我创建了两个Jlabel对象,一个文字,一个图片用作背景。但是调用了add方法后,Jframe只显示了用作背景的Jlabel对象,文字的没显示啊 展开
 我来答
microroom
科技发烧友

2020-01-13 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1578万
展开全部
JFrame默认使用BorderLayout布局管理器,这个管理器将JFrame的ContentPane分成东西南北中四个区域。而当往JFrame中添加组件(通过add(组件名)方法)时,管理器默认会将组件都添加到中心区域,所以如果连续添加多个,自然会发生覆盖,只有一个可见。

应用add的重载方法,将两个JLabel添加到不同的区域。
追问
额,重载add()……
朋友你有范例让我参考下嘛
追答
import java.awt.*;
import javax.swing.*;

public class App extends JFrame
{
public static void main(String[] args)
{
new App();
}
App()
{
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
Icon img=new ImageIcon("p.jpg");
JLabel l1=new JLabel("这是一个标签",SwingConstants.CENTER);
//为了显示l1的背景色,必须将其设置为不透明
l1.setOpaque(true);
l1.setBackground(Color.RED);
l1.setForeground(Color.BLUE);
JLabel l2=new JLabel(img,SwingConstants.LEADING);
add(l2,BorderLayout.CENTER);
add(l1,BorderLayout.SOUTH);
pack();
setLocation((int)(dim.getWidth()-getWidth())/2,(int)(dim.getHeight()-getHeight())/2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式