java jframe 设置背景图片_Java怎么给JFrame添加背景图片

a207590c7f71f53d32fed19103935b1c.png

2016-07-10 21:55连丽芳 客户经理

不知道你怎么加的。加背景图有很多种办法:

- 加一个 JLabel,然后在 JLabel 上添加图片;

- 直接重写 paint 方法,然后用 drawImage(Image src, int x, int y, int width, int height) 方法画上去。

最大化的时候实际上是触发了窗口事件,添加窗口监听器,然后重写 windowResized() 方法,一旦窗口改变大小就重新计算尺寸,并调用 repaint 方法重绘。

================================= 给你一个例子 =================================

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JButton;

import javax.swing.filechooser.FileNameExtensionFilter;

import java.awt.Graphics;

import java.awt.Toolkit;

import java.awt.Image;

import java.awt.event.WindowEvent;

class BackgroundPanel extends JPanel {

private Toolkit tk = Toolkit.getDefaultToolkit();

private Image backgroundImage;

private JButton btnExit = new JButton("Exit");

public BackgroundPanel (String imgFile) {

backgroundImage = tk.createImage(imgFile);

setLayout(null);

btnExit.setBounds(10, 10, 100, 25);

add(btnExit);

}

@Override public void paint (Graphics g) {

g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);

paintComponents(g);

}

}

class DemoFrame extends JFrame {

public DemoFrame () {

super("Demo");

String fileName = null;

JFileChooser fileChooser = new JFileChooser();

fileChooser.setDialogTitle("请选择一张背景图片");

fileChooser.setFileFilter(new FileNameExtensionFilter("图片文件(*.bmp, *.gif, *.jpg, *.jpeg, *.png)", "bmp", "gif&qu梗厂盾断墉登堕券乏猾ot;, "jpg", "jpeg", "png"));

if (fi......余下全文>>

3adf1215ef369c0039be5d7d70b21ae7.png

2016-07-10 21:49齐文生 客户经理

给窗体添加了背景,不会影响往背景上拖按钮 标签的。

添加背景代码如下:

一个例子:

import java.awt.FlowLayout;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class bj {

private JFrame frame = new JFrame("背景图片测试");

private JPanel imagePanel;

private ImageIcon background;

public static void main(String[] args) {

new bj();

}

public bj() {

background = new ImageIcon("C:\\Users\\xin.wen\\Pictures\\2.jpg");// 背景图片

JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面

// 把标签的大小位置设置为图片刚好填充整个面板

label.setBounds(0, 0, background.getIconWidth(),

background.getIconHeight());

// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明

imagePanel = (JPanel) frame.getContentPane();

imagePanel.setOpaque(false);

// 内容窗格默认的布局管理器为BorderLayout

imagePanel.setLayout(new FlowLayout());

imagePanel.add(new JButton("测试按钮"));

frame.getLayeredPane().setLayout(null);

// 把背景图片添加到分层窗格的最底层作为背景

frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(background.getIconWidth(), background.getIconHeight());

frame.setResizable(false);

frame.setVisible(true);

}

}...余下全文>>

87008542890058913538722f71b5c398.png

2016-07-10 21:46黄相森 客户经理

java在JFrame上画东西,主要是使用paint方法,代码如下:

import java.awt.Color;import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;public class Draw extends JFrame{JPanel jPanel=new JPanel();public Draw() { jPanel.setBackground(Color.red); add(jPanel); Drawation drawaction=new Drawation();//添加画图,把上面jpanel的设置给覆盖了;要是先添加画图再添加 add(drawaction); //jpanel则把画图覆盖了 }public static void main(String[] args){ Draw draw=new Draw(); draw.setTitle("abc"); draw.setSize(300,300); draw.setVisible(true); draw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}class Drawation extends JPanel{ public void paintComponent(Graphics g){ super.paintComponents(g); g.drawString("agagh", 50, 45); }} 运行结果如下:

18a58687e3ca11c509a37a26b9d98965.png

2016-07-10 21:43赖鹏博 客户经理

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.sw穿矗扁匪壮睹憋色铂姬ing.JFrame;

import javax.swing.JLabel;

public class T extends JFrame {

JButton ok, no;

JLabel r8 = new JLabel(new ImageIcon("picture.jpg"));

T() {

setLayout(new BorderLayout());

ok = new JButton("ok");

no = new JButton("no");

add(r8);

r8.setLayout(new FlowLayout());

r8.add(ok);

r8.add(no);

pack();

setLocation(100, 90);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

T splashWindow = new T();

}

}

你原来那种方法是想用 JLabel来做背景图片

可是JLabel和JButton是同级的,怎么能够覆盖

可以用JLabel作为容器,因为它从container继承

所以直接往JLabel中添加组件即可

热心网友

c67248dcd0a856aeefde2ff1051eca04.png

2016-07-10 21:40齐晓娴 客户经理

//不就是在窗口上设置一个背景图片么?怎么那么多不同的声音?

//代码如下 运行就看到结果了,你准备好个图片 放到当前路径里就可以了

import java.util.*;

import javax.swing.*;

public class Test extends JFrame {

private JPanel pan;

private JLabel labName;

private JTextField tfName;

private JLabel labPass;

private JPasswordField tfPass;

private JButton butConfirm;

private ImageIcon ii;

private JLabel lab;

Test(){

this.setBounds(200, 200, 300, 200);

pan = new JPanel();

labName = new JLabel("用户名");

tfName = new JTextField(20);

labPass = new JLabel("密 码");

tfPass = new JPasswordField(20);

butConfirm = new JButton("SAVE");

pan.add(labName);

pan.add(tfName);

pan.add(labPass);

pan.add(tfPass);

pan.add(butConfirm);

ii = new ImageIcon("1.jpg");//你只需要把这里的图片1.jpg给改了就可以了

lab = new JLabel(ii);

lab.setBounds(0, 0,ii.getIconWidth(), ii.getIconHeight());

this.getLayeredPane().setLayout(null);

this.getLayeredPane().add(lab, new Integer(Integer.MIN_VALU笭长蒂短郦的垫痊叮花E));

this.setContentPane(pan);

pan.setOpaque(false);

this.setVisible(true);

}

public static void main(String args[]){

new Test();

}

}

4bcd2dc79a8475c2be1bfd1e2e902866.png

2016-07-10 21:37辛国清 客户经理

//不就是在窗口上设置一个背景图片么?怎么那么多不同的声音?

//代码如下 运行就看到结果了,你准备好个图片 放到当前路径里就可以了

import java.util.*;

import javax.swing.*;

public class Test extends JFrame {

private JPanel pan;

private JLabel labName;

private JTextField tfName;

private JLabel labPass;

private JPasswordField tfPass;

private JButton butConfirm;

private ImageIcon ii;

private JLabel lab;

Test(){

this.setBounds(200, 200, 300, 200);

pan = new JPanel();

labName = new JLabel("用户名");

tfName = new JTextField(20);

labPass = new JLabel("密 码");

tfPass = new JPasswordField(20);

butConfirm = new JButton("SAVE");

pan.add(labName);

pan.add(tfName);

pan.add(labPass);

pan.add(tfPass);

pan.add(butConfirm);

ii = new ImageIcon("1.jpg");//你只需要把这里的图片1.jpg给改了就可以了

lab = new JLabel(ii);

lab.setBounds(0, 0,ii.getIconWidth(), ii.getIconHeig梗姬盾肯墉厩堕询乏墨ht());

this.getLayeredPane().setLayout(null);

this.getLayeredPane().add(lab, new Integer(Integer.MIN_VALUE));

this.setContentPane(pan);

pan.setOpaque(false);

this.setVisible(true);

}

public static void main(String args[]){

new Test();

}

}

5c88368a6d8973cf64e9ac16b8b0cb85.png

2016-07-10 21:34龚峻梅 客户经理

添加背景图片,以前给别人答的,你看一下。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值