Java,为什么我无法显示两个Jlabel对象?
我创建了两个Jlabel对象,一个文字,一个图片用作背景。但是调用了add方法后,Jframe只显示了用作背景的Jlabel对象,文字的没显示啊...
我创建了两个Jlabel对象,一个文字,一个图片用作背景。但是调用了add方法后,Jframe只显示了用作背景的Jlabel对象,文字的没显示啊
展开
1个回答
展开全部
JFrame默认使用BorderLayout布局管理器,这个管理器将JFrame的ContentPane分成东西南北中四个区域。而当往JFrame中添加组件(通过add(组件名)方法)时,管理器默认会将组件都添加到中心区域,所以如果连续添加多个,自然会发生覆盖,只有一个可见。
应用add的重载方法,将两个JLabel添加到不同的区域。
应用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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询