當前位置:首頁 » 背景圖片 » jpanel設置背景圖片
擴展閱讀
怎麼搜索高清無版權圖片 2025-10-06 09:10:35
ps圖片拋光 2025-10-06 09:10:00
風景動態圖片大全唯美 2025-10-06 09:06:48

jpanel設置背景圖片

發布時間: 2023-03-09 13:42:30

1. 怎麼在Java里添加背景圖片

可以新建個面板,在面板里放入帶圖片的JLabel,填滿面板即可。
JPanel jp = new JPanel(); //新建面板
jp.setLayout(new FlowLayout()); //設置面板布局
ImageIcon ii=new ImageIcon(getClass().getResource("/Picture/i.jpg"));
JLabel uppicture=new JLabel(ii); //往面板里加入JLabel
this.setVisible(true);

2. java窗體如何添加背景圖片

3. java怎麼給窗體或者面板設置背景圖片

1利用標簽組件來設置x0dx0a標簽本來是一種最簡單的組件,為什麼可以將它設置成為一個窗體的背景呢?首先還是要了解框架JFrame中的層次結構。JFrame中的層次分布及相對關系是:最底層是JRootPane,第二層是JlayerPane,最上層就是ContentPane,也正是我們常說的內容面板。所以一般我們拖放的控制項就是在ContentPane層上。也就是說我們只需將背景圖片放在JFrame的第二層是JlayerPane上,再把內容面板ContentPane設置為透明,則第二層JlayerPane上放置的圖片即成為內容面板的背景了。具體代碼如下:x0dx0aJPanelpnlMain=newJPanel();//創建面板pnlMain。x0dx0agetContentPane().add(pnlMain);//將pnlMain設置為主面板。x0dx0aIconi=newImageIcon("背景.jpg");/*用源圖片「背景.jpg」構造一個ImageIcon對象i,需要注意如果圖片的路徑使用的是相對路徑,則圖片文件必須放在類文件所在文件夾或項目的根文件夾中,否則圖片的路徑必須用絕對路徑。*/x0dx0aJLabellblLogo=newJLabel(i);//用指定的圖片構造標簽對象lbx0dx0athis.getLayeredPane().add(lb,newInteger(Integer.MIN_VALUE));x0dx0a//把標簽放在第二層JlayerPane上。x0dx0alb.setBounds(0,0,ii.getIconWidth(),i.getIconHeight());x0dx0a//設置標簽的尺寸,即背景圖象的大小。x0dx0agetConentPane().setOpaque(false);/*把內容面板設置為透明,這樣整個框架的背景就不再是內容面板的背景色,而是第二層中標簽的圖像。*/x0dx0apnlMain.add(lb);//將標簽添加到主面板pnlMain中。x0dx0a用標簽組件JLabel來設置窗體背景,其擴展性上比較差,且在標簽上不能放置其他組件,比如:在放置一個JButton,整個布局背景圖就錯亂。導致這種現象是因為Java載入組件是有順序的,作為背景的JLabel的代碼一定要放在全部組件代碼的最後,這樣JLabel的背景圖片才不會被其他組件遮住,從而使整個布局背景錯亂。所以採用這種方式來設置窗體背景有很大的局限性。因此最好是採用以下方式來設置窗體背景。x0dx0a2通過JPanel面板來設置窗體背景x0dx0aJPanel面板是Java中的容器之一。而Java中的容器是沒有背景圖片的屬性的,它們只有背景顏色,如果需要在JPanel面板上設置窗體背景,就需要重寫paintComponent(Graphicsg)方法,即把所要設置的背景圖片畫上作為JPanel面板的背景。具體實現如下:x0dx0a首先定義一個JPanel的子類BjPanel,由於JPanel的構造方法不能添加圖像,因此在創建此子類的時候先用getImage載入一幅背景圖片,在重寫paintComponent(Graphicsg)方法時,利用drawImage方法將其逐漸繪制到屏幕上,並將該面板添加到框架中,最後將該面板設置為透明。其代碼如下:x0dx0aimportjava.awt.*;x0dx0aimportjavax.swing.*;{x0dx0apublicstaticvoidmain(Stringargs[])x0dx0a{x0dx0aBjFramef=newBjFrame();x0dx0af.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);x0dx0af.setVisible(true);x0dx0a}x0dx0a}{x0dx0apublicBjFrame()x0dx0a{x0dx0asetSize(WTH,HHT);x0dx0aBjPanelpl=newBjPanel();x0dx0aContainercontentPane=getContentPane();x0dx0acontentPane.add(pl);x0dx0apl.setOpaque(true);x0dx0a}x0dx0apublicstaticfinalintWTH=300;x0dx0apublicstaticfinalintHHT=200;x0dx0a}{x0dx0aImageim;x0dx0apublicBjPanel()x0dx0a{x0dx0aim=Toolkit.getDefaultToolkit().getImage("背景.jpg");//需要注意的是如果用相對路徑載入圖片,則圖片文件必須放在類文件所在文件夾或項目的根文件夾中,否則必須用絕對路徑。x0dx0a}(Graphicsg)x0dx0a{x0dx0asuper.paintComponent(g);x0dx0aintimWidth=image.getWidth(this);x0dx0aIntimHeight=image.getHeight(this);//定義圖片的寬度、高度x0dx0aintFWidth=getWidth();x0dx0aintFHeight=getHeight();//定義窗口的寬度、高度x0dx0aintx=(FWidth-imWidth)/2;x0dx0ainty=(FHeight-imHeight)/2;//計算圖片的坐標,使圖片顯示在窗口正中間x0dx0ag.drawImage(image,x,y,null);//繪制圖片x0dx0a}x0dx0a}

4. java中swing界面上怎麼給jpanel上添加背景圖片

//重寫JPanel的這個方法就可以了
@Override
publicvoidpaintComponent(Graphicsgs){
Graphics2Dg=(Graphics2D)gs;
super.paintComponent(g);
//畫背景圖片
Imageimage=Toolkit.getDefaultToolkit().getImage(getClass().getResource(imgPath));
g.drawImage(image,0,0,width,height,this);
}

一個完整的代碼:

packagetest;

importjava.awt.Graphics;
importjava.awt.Image;
importjava.net.URL;

importjavax.swing.ImageIcon;
importjavax.swing.JFrame;
importjavax.swing.JPanel;

//為窗口添加背景圖片
publicclassJFrameBackground{

privateJFrameframe=newJFrame("帶背景圖片的JFrame");
privateJPanelimagePanel;
privateImageIconbackgroundimg;

publicJFrameBackground(){

imagePanel=newJPanel(){
@Override
protectedvoidpaintComponent(Graphicsg){
super.paintComponent(g);
URLlocation=this.getClass().getResource("grapes.gif");
backgroundimg=newImageIcon(location);
Imageimg=backgroundimg.getImage();
g.drawImage(img,0,0,backgroundimg.getIconWidth(),
backgroundimg.getIconHeight(),
backgroundimg.getImageObserver());
frame.setSize(backgroundimg.getIconWidth(),
backgroundimg.getIconHeight());
}

};

frame.add(imagePanel);
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

publicstaticvoidmain(String[]args){
newJFrameBackground();
}
}

這是運行的一個截圖:

參考網址:

http://www.linuxidc.com/Linux/2011-08/41689.htm 兩種設置背景的方法

http://blog.csdn.net/one_and_only4711/article/details/6594770 動態改變背景大小

5. jDialog已添加兩個JPanel,如何給jDialog添加背景圖片啊,並且JPanel是透明的,求大神!

按照你的要求給jDialog添加背景圖片的Java程序如下

注意 背景圖片要放在Java當前項目的根目錄下

比如你的當前項目名是project1, 在D:projectproject1 下就是你的當前項目的根目錄(其中D:project只是打個比方,以你的實際目錄為准)

importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Dimension;
importjava.awt.Image;
importjava.awt.Point;
importjava.awt.Rectangle;
importjava.awt.Toolkit;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JDialog;
importjavax.swing.JLabel;
importjavax.swing.JLayeredPane;
importjavax.swing.JPanel;
publicclassD{
D(){
JDialogjDialog=newJDialog();
jDialog.setSize(400,200);
JPaneljp1=newJPanel();
JPaneljp2=newJPanel();
Containercontainer=jDialog.getContentPane();
JPanelpanelBg=newJPanel();
JPanelpanelContent=newJPanel();
JLayeredPanelp=newJLayeredPane();
Dimensiondimension=newDimension(jDialog.getWidth(),jDialog.getHeight());
lp.setSize(dimension);
panelContent.setLayout(newBorderLayout());
ImageimageBg=Toolkit.getDefaultToolkit().getImage("autumn1.jpg");
ImageIconimageIcon=newImageIcon(imageBg.getScaledInstance
(dimension.width,dimension.height,Image.SCALE_FAST));
JLabeljl1=newJLabel(imageIcon);
Pointorigin=newPoint(0,0);
Rectanglerectangle=newRectangle(origin,dimension);
panelBg.setBounds(rectangle);
panelBg.setLayout(newBorderLayout());
panelBg.add(jl1,BorderLayout.CENTER);
JLabeljl=newJLabel("正在測量......");
jp1.add(jl);
JButtonjb=newJButton("取消");
jp2.add(jb);
jp1.setOpaque(false);
jp2.setOpaque(false);
panelContent.setBounds(rectangle);
panelContent.add(jp1,BorderLayout.CENTER);
panelContent.add(jp2,BorderLayout.SOUTH);
panelContent.setOpaque(false);
lp.add(panelBg,newInteger(0));
lp.add(panelContent,newInteger(1));
container.add(lp,BorderLayout.CENTER);
jDialog.setUndecorated(true);
jDialog.setLocationRelativeTo(null);
jDialog.setVisible(true);
}
publicstaticvoidmain(String[]args){
newD();
}
}

運行結果

6. JAVA怎樣讓JLabel透明,顯示出下面的JPanel背景

import javax.swing.*;

import java.awt.*;

public class BackGround extends JFrame {
Container content;
Toolkit toolkit;
JLabel bkLabel = new JLabel(); // 背景圖片標簽
JLabel horseLabel = new JLabel();
JButton bButton;
int screenWidth, screenHeight, WIDTH, HEIGHT;
ImageIcon backImage, bImage;
BackGround() {
content = getContentPane();
toolkit = Toolkit.getDefaultToolkit();
screenWidth = toolkit.getScreenSize().width;
screenHeight = toolkit.getScreenSize().height;
bImage = new ImageIcon("pic/logo.jpg");
//我的笨方法
JLabel image_lab = new JLabel(new ImageIcon("D:\\pic\\logo.jpg"));
//編譯的時候會幫你把文件拷貝到classes目錄下面去
//同時要達到LZ的效果很簡單,兩個Panel。直接覆蓋的話,如果覆蓋面板小於底層面板,當滑鼠移動到底層面板區域。則顯示了,所以建議加上 //setEnabled(false);這樣做LZ你不覺得復雜了嗎?你直接在我的image_lab 上載入組件不行嗎?或者你先都把組件隱藏了,等用戶觸發事件再顯//示也可以啊。
//
backImage = new ImageIcon("pic/background.gif");
bkLabel.setIcon(backImage);
bkLabel.setOpaque(true);
WIDTH = backImage.getIconWidth();
HEIGHT = backImage.getIconHeight();
content.add(bkLabel, -1); // 添加背景圖片
bButton = new JButton(bImage);
JPanel panel2 = new JPanel();
panel2.setOpaque(false); // 設置panel2背景透明
panel2.setPreferredSize(new Dimension(40, 40));
panel2.add(bButton);
content.add(panel2);
validate();
setBounds(300, 200, WIDTH, HEIGHT);
setLocation((screenWidth - WIDTH) / 2, (screenHeight - HEIGHT) / 2);
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

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