java中如何对JFrame进行设置背景颜色和背景图片

 
 
Java窗口是指JFrame或者Frame

其次,窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色。其实,J在你直接调用这个方法后,你的确设置了背景颜色,而你看到的却不是直接的JFrame或者Frame,而是JFrame.getContentPane().而JFrame上的contentPane默认是Color.WHITE的,所以,无论你对JFrame或者Frame怎么设置背景颜色,你看到的都只是contentPane.

最后,讲解决办法:

办法A:在完成初始化,调用getContentPane()方法得到一个contentPane容器,然后将其设置为不可见,即setVisible(false)。这样,你就可以看到JFrame的庐山真面貌啦!

核心代码this.getContentPane().setVisible(false);//得到contentPane容器,设置为不可见

方法B:将contentPane的颜色设置为你想要的颜色,而不搜索是对JFrame本身设置,

核心代码:this.getContentPane().setBackground(Color.red);//设置contentPane为红色

将核心代码替换方法A核心代码即可实现

方法C:为JFrame添加一个Panel或者JLabel等其他组件,设置其颜色为你想要的颜色,然后将其覆盖JFrame窗口即可

JFrame默认是BorderLayoutJPanel默认是FlowLayout。
1.JFrame设置背景色,注意体会注释的
package com.tools;
import java.awt.Color; import javax.swing.JFrame;
public class Test extends JFrame
{
public static void main(String[] args)
{
   new Test();
}


public Test()
{
   this.setSize(400,300);
   this.setLocation(400,300);
   this.setBackground(Color.blue);
   this.getContentPane().setBackground(Color.red);
   this.getContentPane().setVisible(false);//如果改为true那么就变成了红色。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   this.setVisible(true);
}
}

2.给JFrame设置背景图片。
      方法1:通过在JFrame中添加一个JPanel,背景图片放在JPanel上来实现。代码如下:
import java.awt.*; import javax.swing.*;
public class Test extends JFrame
{
//创建一个容器
Container ct;
//创建背景面板。
BackgroundPanel bgp;

//创建一个按钮,用来证明我们的确是创建了背景图片,而不是一张图片。
JButton jb;
public static void main(String[] args)
{
   new Test();
}
public Test()
{
   //不采用任何布局方式。
ct=this.getContentPane();
   this.setLayout(null);

   //在这里随便找一张400*300的照片既可以看到测试结果。
bgp=new BackgroundPanel((new ImageIcon("images\\background.jpg")).getImage());
   bgp.setBounds(0,0,400,300);
   ct.add(bgp);

   //创建按钮
jb=new JButton("测试按钮");
jb.setBounds(60,30,160,30);
   ct.add(jb);

   this.setSize(400,300);
   this.setLocation(400,300);
   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   this.setVisible(true);
}
}
class BackgroundPanel extends JPanel
{
Image im;
public BackgroundPanel(Image im)
{
   this.im=im;
   this.setOpaque(true);
}
//Draw the back ground.
public void paintComponent(Graphics g)
{
   super.paintComponents(g);
   g.drawImage(im,0,0,this.getWidth(),this.getHeight(),this);

}
}
方法2:我们用JLayeredPane,JLayeredPane 为 JFC/Swing 容器添加了深度,允许组件在需要时互相重叠。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他组

个人方法2:我们用JLayeredPane,JLayeredPane 为 JFC/Swing 容器添加了深度,允许组件在需要时互相重叠。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他组方法2:我们用JLayeredPane,JLayeredPane 为 JFC/Swing 容器添加了深度,允许组件在需要时互相重叠。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他

 
/**
* 给JFrame 添加一个背景图案。
*/
package com.swingpractise;
import javax.swing.*; public class JFrameBackground4 extends JFrame
{
//创建一个JLayeredPane用于分层的。
JLayeredPane layeredPane;
//创建一个Panel和一个Label用于存放图片,作为背景。
JPanel jp;
JLabel jl;
ImageIcon image;

//创建一个按钮用于测试的。
JButton jb;
public static void main(String[] args)
{
   new JFrameBackground4();
}

public JFrameBackground4()
{
   layeredPane=new JLayeredPane();
   image=new ImageIcon("images\\background.jpg");//随便找一张图就可以看到效果。 
//创建背景的那些东西
jp=new JPanel();
   jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight());    jl=new JLabel(image);
//   jl.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
   jp.add(jl);

   //创建一个测试按钮
jb=new JButton("测试按钮");
jb.setBounds(100,100,100,100);

   //将jp放到最底层。
layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER);
   //将jb放到高一层的地方
layeredPane.add(jb,JLayeredPane.MODAL_LAYER);

   this.setLayeredPane(layeredPane);
   this.setSize(image.getIconWidth(),image.getIconHeight());
   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   this.setLocation(image.getIconWidth(),image.getIconHeight());
   this.setVisible(true);
}
}




第二个程序和三个程序的窗体
  • 39
    点赞
  • 177
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值