java怎么给窗体或者面板java设置窗体透明背景图片?

关于java编程窗体加背景图片的问题_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:636,036贴子:
关于java编程窗体加背景图片的问题收藏
给一个登录界面加背景图片,一直加不上,同学给了一套代码,加上去也不行,彻底跪了,求大神指点一下。ps:窗体的大小和图片大小一样。只把有用的部分代码贴了出来,java初学,跪求勿喷~public class login extends JFrame{
private JFrame jf = new JFrame(&登录窗口&);
private JLabel l_name = new JLabel(&姓名:&);
private JLabel l_password = new JLabel(&口令:&);
private JLabel l_identity =new JLabel(&身份:&);
static JTextField t_name = new JTextField(10);
static JPasswordField t_password = new JPasswordField(10);
private JButton ok = new JButton(&ok&);
private JButton cancel = new JButton(&cancel&);
private JRadioButton jr1 = new JRadioButton(&学生&);
private JRadioButton jr2 = new JRadioButton(&管理员&);
private Box b1,b2,b3,b4,b5;
private JLabel jl=new JLabel(&登录&);
public login()
ok.addActionListener(new okListener());
cancel.addActionListener(new cancelListener());
ButtonGroup group=new ButtonGroup();
group.add(jr1);
group.add(jr2);
Container contentPane=jf.getContentPane();
jl.setFont(new Font(&TimesRoman&,Font.BOLD,24));
jl.setForeground(Color.black);
contentPane.setLayout(null);
contentPane.add(l_name);
contentPane.add(l_password);
contentPane.add(l_identity);
contentPane.add(t_name);
contentPane.add(t_password);
contentPane.add(jr1);
contentPane.add(jr2);
contentPane.add(ok);
contentPane.add(cancel);
contentPane.add(jl);
l_name.setBounds(110,100,75,20);
l_password.setBounds(110,140,75,20);
t_name.setBounds(170,100,75,20);
t_password.setBounds(170,140,75,20);
l_identity.setBounds(110,180,75,20);
jr1.setBounds(150,180,60,20);
jr2.setBounds(220,180,75,20);
ok.setBounds(110,220,60,20);
cancel.setBounds(180,220,75,20);
jl.setBounds(150,50,75,24);
jf.setVisible(true);
jf.setSize(400,271);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setLocation(500,270);
//========添加背景==============
{Image back=getImagePath(&image/login.jpg&);
background=new ImageIcon(back);
JLabel jl_
jl_back=new JLabel(background);
jl_back.setBounds(0, 0, 400,271);
JPanel jp_
jp_back=(JPanel)this.getContentPane();
jp_back.setOpaque(false);//使面板透明
this.getLayeredPane().add(jl_back,new Integer(Integer.MIN_VALUE));
//===============================
public Image getImagePath(String resource){
//resource是一个字符串,放置要读取图片文件的相对路径
Image image=
InputStream is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(resource);
image=ImageIO.read(is);
} catch (IOException e) {
e.printStackTrace();
登录百度帐号推荐应用2319人阅读
1 利用标签组件来设置   标签本来是一种最简单的组件,为什么可以将它设置成为一个窗体的背景呢?首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是JRootPane,第二层是JlayerPane,最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在ContentPane层上。也就是说我们只需将背景图片放在JFrame的第二层是JlayerPane上,再把内容面板ContentPane设置为透明,则第二层JlayerPane上放置的图片即成为内容面板的背景了。具体代码如下:
  JPanelpnlMain=new JPanel(); //创建面板pnlMain。   getContentPane().add(pnlMain); //将pnlMain设置为主面板。   Iconi=new ImageIcon(&背景.jpg&); /*用源图片“背景.jpg”构造一个ImageIcon对象i,需要注意如果图片的路径使用的是相对路径,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则图片的路径必须用绝对路径。*/   JLabellblLogo = new JLabel(i);
//用指定的图片构造标签对象lb   this.getLayeredPane().add(lb, new Integer(Integer.MIN_VALUE));    //把标签放在第二层JlayerPane上。   lb.setBounds(0, 0,ii.getIconWidth(),i.getIconHeight());   //设置标签的尺寸,即背景图象的大小。   getConentPane().setOpaque(false); /*把内容面板设置为透明,这样整个框架的背景就不再是内容面板的背景色,而是第二层中标签的图像。*/
  pnlMain.add(lb); //将标签添加到主面板pnlMain中。   用标签组件JLabel来设置窗体背景,其扩展性上比较差,且在标签上不能放置其他组件,比如:在放置一个JButton,整个布局背景图就错乱。导致这种现象是因为Java加载组件是有顺序的,作为背景的JLabel的代码一定要放在全部组件代码的最后,这样JLabel的背景图片才不会被其他组件遮住,从而使整个布局背景错乱。所以采用这种方式来设置窗体背景有很大的局限性。因此最好是采用以下方式来设置窗体背景。   2 通过JPanel面板来设置窗体背景
  JPanel面板是Java中的容器之一。而Java中的容器是没有背景图片的属性的,它们只有背景颜色,如果需要在JPanel面板上设置窗体背景,就需要重写paintComponent(Graphics g)方法,即把所要设置的背景图片画上作为JPanel面板的背景。具体实现如下:   首先定义一个JPanel的子类BjPanel,由于JPanel的构造方法不能添加图像,因此在创建此子类的时候先用getImage载入一幅背景图片,在重写paintComponent(Graphics g)方法时,利用drawImage方法将其逐渐绘制到屏幕上,并将该面板添加到框架中,最后将该面板设置为透明。其代码如下:
  import java.awt.*;   import javax.swing.*;   public class bkground   {    public static void main(String args[])    {    BjFramef=newBjFrame();    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    f.setVisible(true);   }   }   class BjFrame extends JFrame
  {   public BjFrame()   {   setSize(WTH,HHT);   BjPanel pl=new BjPanel();   Container contentPane=getContentPane();   contentPane.add(pl);   pl. setOpaque(true);   }   public static final int WTH=300;   public static final int HHT=200;   }   class BjPanel
extends JPanel   {   I   public BjPanel()   {    im=Toolkit.getDefaultToolkit().getImage(&背景.jpg&);//需要注意的是如果用相对路径载入图片,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则必须用绝对路径。    }   public void paintComponent(Graphics g)   {   super.paintComponent(g);   int imWidth=image.getWidth(this);
  Int imHeight=image.getHeight(this); //定义图片的宽度、高度   int FWidth=getWidth();   int FHeight=getHeight();//定义窗口的宽度、高度   int x=(FWidth-imWidth)/2;   int y=(FHeight-imHeight)/2;//计算图片的坐标,使图片显示在窗口正中间   g.drawImage(image,x,y,null);//绘制图片    }    }
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19447次
排名:千里之外
转载:24篇
(3)(1)(2)(2)(2)(7)(4)(3)java窗口背景图片怎么设置
通过为jframe设置背景图片,让我明白了以下的知识要点:
(1)jframe窗口的组成部分,最底层是jrootpane面板。(这一点恐怕很多初学者都没有注意吧!)
(2)jframe的组成如下:
jrootpane中包含glasspane和layeredpane两个面板。而layeredpane面板包含contentpane和jmenubar。(没想到吧contentpane是放在contentpane中的?)
(3)在jframe上添加组件,往往是添加在contentpane中。。但是在contentpane的下面还有两层面板,那就是layeredpane和jrootpane。
(4)任何一本关于java的书中都会介绍contentpane,却很少提到layeredpane和jrootpane,因此使得很多的初学者产生:jframe中只要一个contentpane的错误认识。
通过解决背景设置的问题,让我对jframe中容器的“层”结构,有个更深...
通过为jframe设置背景图片,让我明白了以下的知识要点:
(1)jframe窗口的组成部分,最底层是jrootpane面板。(这一点恐怕很多初学者都没有注意吧!)
(2)jframe的组成如下:
jrootpane中包含glasspane和layeredpane两个面板。而layeredpane面板包含contentpane和jmenubar。(没想到吧contentpane是放在contentpane中的?)
(3)在jframe上添加组件,往往是添加在contentpane中。。但是在contentpane的下面还有两层面板,那就是layeredpane和jrootpane。
(4)任何一本关于java的书中都会介绍contentpane,却很少提到layeredpane和jrootpane,因此使得很多的初学者产生:jframe中只要一个contentpane的错误认识。
通过解决背景设置的问题,让我对jframe中容器的“层”结构,有个更深层的了解。
以上知识点,希望初学swing的朋友们注意。
没有那种直接设置的方法,只能将一张图片放到component里,然后在这component上面再其他的component,换种思路也可以达到效果
你打开internet选项看看在安全里的自定义级别里的javascript是否开启了
可以在JMenuItem上设置图片和背景颜色import java.awt.BorderLimport java.awt.Cimport ...
也是一样的吧
答: Otavalo地区哪个湖最漂亮?
答: 这个要设计到JNI的开发,就是用Java来调用C语言的函数库,还要编写缓冲器来解决传输问题,还有就是网络协议一定要了解,做的时候要用多线程来控制你所有的缓冲器,...
答: 所谓的网络编程,不论c还是java,本质上都是通过socket进行数据传输;一般情况下可以使用的传输协议有tcp、udp、ftp等等,这些协议为网络变成提供基本...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:1234567891011121314152321人阅读
1 利用标签组件来设置   标签本来是一种最简单的组件,为什么可以将它设置成为一个窗体的背景呢?首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是JRootPane,第二层是JlayerPane,最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在ContentPane层上。也就是说我们只需将背景图片放在JFrame的第二层是JlayerPane上,再把内容面板ContentPane设置为透明,则第二层JlayerPane上放置的图片即成为内容面板的背景了。具体代码如下:
  JPanelpnlMain=new JPanel(); //创建面板pnlMain。   getContentPane().add(pnlMain); //将pnlMain设置为主面板。   Iconi=new ImageIcon(&背景.jpg&); /*用源图片“背景.jpg”构造一个ImageIcon对象i,需要注意如果图片的路径使用的是相对路径,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则图片的路径必须用绝对路径。*/   JLabellblLogo = new JLabel(i);
//用指定的图片构造标签对象lb   this.getLayeredPane().add(lb, new Integer(Integer.MIN_VALUE));    //把标签放在第二层JlayerPane上。   lb.setBounds(0, 0,ii.getIconWidth(),i.getIconHeight());   //设置标签的尺寸,即背景图象的大小。   getConentPane().setOpaque(false); /*把内容面板设置为透明,这样整个框架的背景就不再是内容面板的背景色,而是第二层中标签的图像。*/
  pnlMain.add(lb); //将标签添加到主面板pnlMain中。   用标签组件JLabel来设置窗体背景,其扩展性上比较差,且在标签上不能放置其他组件,比如:在放置一个JButton,整个布局背景图就错乱。导致这种现象是因为Java加载组件是有顺序的,作为背景的JLabel的代码一定要放在全部组件代码的最后,这样JLabel的背景图片才不会被其他组件遮住,从而使整个布局背景错乱。所以采用这种方式来设置窗体背景有很大的局限性。因此最好是采用以下方式来设置窗体背景。   2 通过JPanel面板来设置窗体背景
  JPanel面板是Java中的容器之一。而Java中的容器是没有背景图片的属性的,它们只有背景颜色,如果需要在JPanel面板上设置窗体背景,就需要重写paintComponent(Graphics g)方法,即把所要设置的背景图片画上作为JPanel面板的背景。具体实现如下:   首先定义一个JPanel的子类BjPanel,由于JPanel的构造方法不能添加图像,因此在创建此子类的时候先用getImage载入一幅背景图片,在重写paintComponent(Graphics g)方法时,利用drawImage方法将其逐渐绘制到屏幕上,并将该面板添加到框架中,最后将该面板设置为透明。其代码如下:
  import java.awt.*;   import javax.swing.*;   public class bkground   {    public static void main(String args[])    {    BjFramef=newBjFrame();    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    f.setVisible(true);   }   }   class BjFrame extends JFrame
  {   public BjFrame()   {   setSize(WTH,HHT);   BjPanel pl=new BjPanel();   Container contentPane=getContentPane();   contentPane.add(pl);   pl. setOpaque(true);   }   public static final int WTH=300;   public static final int HHT=200;   }   class BjPanel
extends JPanel   {   I   public BjPanel()   {    im=Toolkit.getDefaultToolkit().getImage(&背景.jpg&);//需要注意的是如果用相对路径载入图片,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则必须用绝对路径。    }   public void paintComponent(Graphics g)   {   super.paintComponent(g);   int imWidth=image.getWidth(this);
  Int imHeight=image.getHeight(this); //定义图片的宽度、高度   int FWidth=getWidth();   int FHeight=getHeight();//定义窗口的宽度、高度   int x=(FWidth-imWidth)/2;   int y=(FHeight-imHeight)/2;//计算图片的坐标,使图片显示在窗口正中间   g.drawImage(image,x,y,null);//绘制图片    }    }
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19449次
排名:千里之外
转载:24篇
(3)(1)(2)(2)(2)(7)(4)(3)}

我要回帖

更多关于 java 面板放到窗体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信