Java Swing 怎么自定义界面背景图片

怎么用JFileChoose在电脑中选择一张图片,确定后将图片设置问JFrame界面背景图片??

高手帮忙啊,请尽量写详细的代码。谢谢!
2楼的没效果啊。...我实在是做不出了...急要啊....

在java swing中需要为容器添加自定义图片或者背景图片。提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel,代码如下:

1、JPanel(源代码)

package oo;  
import java.awt.Graphics;  
import java.awt.Image;  
import java.io.File;  
import javax.swing.ImageIcon;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  

public class Drawing {  
  
    JFrame jframe = new JFrame();  
    public static JPanel GImage = null;  
  
    public Drawing() {  
        initFrame();  
    }  
  
    // åˆå§‹åŒ–窗口  
    public void initFrame() {  
        // åˆ©ç”¨JPanel添加背景图片  
  
        GImage = new JPanel() {  
  
            protected void paintComponent(Graphics g) {  
                ImageIcon icon = new ImageIcon("image\\benbenla.jpg");  
                Image img = icon.getImage();  
                g.drawImage(img, 0, 0, icon.getIconWidth(),  
                        icon.getIconHeight(), icon.getImageObserver());  
                jframe.setSize(icon.getIconWidth(), icon.getIconHeight());  
  
            }  
  
        };  
        jframe.setTitle("测试背景图片");  
        jframe.add(GImage);  
        jframe.pack();  
        jframe.setVisible(true);  
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  
    }  
  
    public static void main(String[] args) {  
        new Drawing();  
  
    }  
  
}

2、JLabel源代码

package swing.draw;  
import java.awt.Image;  
import javax.swing.ImageIcon;  
import javax.swing.JFrame;  
import javax.swing.JLabel; 
 
/** åˆ©ç”¨JLabel来构建图片 */  
public class Drawing2 {  
    JLabel jlpic = new JLabel();  
    JFrame jframe = new JFrame();  
  
    public Drawing2() {  
  
        init1Frame();  
    }  
  
    public void init1Frame() {  
        ImageIcon icon = new ImageIcon("image\\benbenla.jpg");  
        icon.setImage(icon.getImage().getScaledInstance(icon.getIconWidth(),  
                icon.getIconHeight(), Image.SCALE_DEFAULT));  
        System.out.println(icon.getIconHeight() + "" + icon.getIconWidth());  
        jlpic.setBounds(0, 0, 1366, 768);  
        jlpic.setHorizontalAlignment(0);  
        jlpic.setIcon(icon);  
        jframe.setSize(1366, 768);  
        jframe.add(jlpic);  
        jframe.pack();  
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        jframe.setVisible(true);  
  
    }  
  
    public static void main(String args[]) {  
  
        new Drawing2();  
    }  
}

添加控件:

jlpic.setIcon(icon);    
Container c = new Container();  
JLabel user = new JLabel("用户:");  
JLabel password = new JLabel("密码:");  
JTextField txf_userName = new JTextField();  
JPasswordField pwd_password = new JPasswordField()  
{  
public void paste(){  
UIManager.getLookAndFeel().provideErrorFeedback(this);  
 }  
};  
user.setBounds(200,25,50,25);  
password.setBounds(200,52,50,25);  
txf_userName.setBounds(300,25,150,25);  
pwd_password.setBounds(300,52,150,25);  
c.add(user);  
c.add(txf_userName);  
c.add(password);  
c.add(pwd_password);  
c.add(jlpic);  
jframe.setSize(1366, 768);    
// jframe.add();    
jframe.add(c);
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-23
不要凡事都要靠别人,代码要自己写才行的。
如果你要自定义其他功能的的SWING组件,可继承相应的组件再增减功能。
对于你的要求,我可以提供一些思路:
JFrame查看JDK可以知道他是由3个面板嵌套组成,其中contentPane用于显示界面的,并且还提供了一个方法进行设置:setContenPane(Container coneainer)
显然我们可以自定义一个Panel进行替换。
在SWING中,JPanel可以做为一个基类添加自己的功能,只要继承自己的功能就可以实现了,一般组件的绘制方面的功能增加离不开paintConpenment(Graphic)
那么我们只要在绘制JPanel的后面再绘制一张图片就可以了。本回答被提问者采纳
第2个回答  2010-06-30
楼上说的对,下面是一个具体代码 ,直接拷贝运行即可查看效果

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
@SuppressWarnings("serial")
class MyFrame extends JFrame implements ActionListener{
JButton exitB;
public MyFrame(){
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
exitB=new JButton("退出");
exitB.setToolTipText("安全退出系统");
JPanel lowerPanel=new MyPanel(); //在底部添加一个Panel
Container c=this.getContentPane();
lowerPanel.add(exitB); //pannel上添加其他组件
c.add(lowerPanel); //Frame上添加Panel
exitB.addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==exitB)
{
shutdown();
} }

private void shutdown() {
System.exit(0);
}

public static void main(String[]args){
new MainformFrame();
}

}

//自定义面板 继承JPanel
class MyPanel extends JPanel {
public void paintComponent(Graphics g) { // 重绘函数
Graphics2D g2 = (Graphics2D)g;
super.paintComponent(g);
Image img = Toolkit.getDefaultToolkit().getImage("bg.jpg");
g2.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this); //在面板上绘制背景图片
}
}
第3个回答  推荐于2018-02-27
把图片放在JLable上,在把JButton等组件放在JPabel,设置为透明的再放在JLAbel上,最后把JLabel放在另一个JPabel上,最后放在底层容器上。setLayout(null)布局。
private JPanel pan, back;
private JTextField tfName;
private JPasswordField tfPass;
private JButton OK, Cancel; private ImageIcon ii;
private JLabel lab, users, userpassword,;
ii = new ImageIcon("图片路径");
this.setLocation(250,100);//位置
pan = new JPanel();//用来放图片
users = new JLabel("用 户:");
users.setBounds(0, 0, 90, 70);//设置JLable的大小和位置,
userpassword = new JLabel("密 码:");
userpassword.setBounds(0, 40, 90, 70);
tfName = new JTextField(20);
tfName.setBounds(90, 25, 150, 23);
tfName.setOpaque(false);// 设置为透明
tfPass = new JPasswordField(20);
tfPass.setBounds(90, 65, 150, 23);
tfPass.setOpaque(false);
OK = new JButton("登陆");
OK.setBounds(20, 150, 60, 20);
Cancel = new JButton("取消");
Cancel.setBounds(90, 150, 60, 20);
back = new JPanel();//用于放JLable和JButton,JTextField
back.setBounds(60, 140, 310, 170);
back.setLayout(null);//布局为空
back.setOpaque(false);
back.add(users);//添加组件
back.add(userpassword);
back.add(tfName);
back.add(tfPass);
back.add(OK);
back.add(Cancel);
pan.add(back);//把放有组件的容器放装图片的容器上
pan.setLayout(null);
pan.setOpaque(false);
lab = new JLabel(ii);//把图片放在JLAbel上
lab.setBounds(0, 0, ii.getIconWidth(), ii.getIconHeight());//大小由图片的大小决定
this.getLayeredPane().setLayout(null);
this.getLayeredPane().add(lab, new Integer(Integer.MIN_VALUE));
this.setContentPane(pan);本回答被网友采纳

Java Swing 怎么自定义界面背景图片
在java swing中需要为容器添加自定义图片或者背景图片。提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel,代码如下:1、JPanel(源代码)package oo; import java.awt.Graphics; import java.awt.Image; import java.io.File; import javax.swing.ImageIcon; import javax.swing.JFram...

java中swing窗体美化(swing的控件美化)
java怎么改变窗体边框的颜色?1、java.awt包中的TextField类(单行文本框)、TextArea类(多行文本框),以及javax.swing包中的JTextField类(单行文本框)、JTextArea类(多行文本框),它们都有setBackground方法来设置此文本组件的背景色。2、DefaultTableCellRenderer,只需要覆盖它的getTableCellRendererCo...

Java swing 窗体如何设置背景图片?
backPanel.setLayout(new BorderLayout());这个是我程序里面复制出来的,效果就下面图一样。

java swing整个JFrame设置背景图片
首先,f.setUndecorated(true);可以把标题栏去掉,这样就只剩下中间的内容了。然后背景图你可以新建一个类,继承JPanel,然后重写方法 public void paint(Graphics g){} 方法体内用g.drawImage(xxx)把你的图片绘出来。接着在你的f里用f.add(new 继承JPanel的自定义类),因为JFrame默认是BorderLayout...

java中swing界面上怎么给jpanel上添加背景图片
package test;import java.awt.Graphics;import java.awt.Image;import java.net.URL;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JPanel;\/\/为窗口添加背景图片public class JFrameBackground {private JFrame frame = new JFrame("带背景图片的JFrame");private JPanel...

javaswing整个JFrame设置背景图片
\/\/示例代码,下面的注释有说明背景图片 import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class Fre { ...

JAVA里面 怎么用AWT、swing等简单的 建立背景图片?
public void setBack() { ((JPanel) this.getContentPane()).setOpaque(false);\/\/ Winter.jpg这个图片的位置要跟当前这个类是同一个包下 URL url = "当前这个类的名字".class.getResource("Winter.jpg");ImageIcon img = new ImageIcon(url);JLabel background = new JLabel(img);this....

java里面怎么给一个窗体添加一张背景图片啊,需要详细代码!谢谢
import javax.swing.*;public class IS extends JFrame { IS(){ JPanel p=new JPanel();JLabel l=new JLabel();Icon icon=new ImageIcon("D:\\\\a.jpg"); \/\/在此直接创建对象 l.setIcon(icon);l.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight());p.add(l,new Integer...

Java中JInternalFrame内部窗体如何设置它的背景图片
Java 中可以用 JLayeredPane,你把一个 JLabel 设置图标后放置在 z 坐标的最底层就可以了。样例教程:http:\/\/docs.oracle.com\/javase\/tutorial\/uiswing\/components\/layeredpane.html

用JFRAME做JAVA界面,如何添加一张自定义图片做为背景?
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:\\...

相似回答