Set JFrame background picture from two ways:
1.Jpanel class Paintcomponent (Graphics g) Redraw background picture
2. Use Layeredpane to add depth to swing controls Allow the build to overlap at the required time
from low to High level is: Default,palette,modal,popup,drag
Run the show: Upload later
API query:
Jpanel:http://docs.oracle.com/javase/7/docs/api/javax/swing/jpanel.html
Graphics:http://docs.oracle.com/javase/7/docs/api/java/awt/graphics.html
Layeredpane:http://www.apihome.cn/api/java/jlayeredpane.html
Tips:
(1) The difference between paintcomponent (Graphics g) and paint ():
Super.paintcomponent (g) is the parent class JPanel in the method, will be the entire panel with the background color redraw again, play the role of clear screen
The AWT control is drawn in the paint method, so as long as the AWT control inherits, it is possible to simply overwrite the paint method.
In a swing control, the paint method calls Paintcomponent, Paintborder,
Paintchildren three methods, the latter both generally default, so swing programming, if inherited jcomponent or its subclasses, to overwrite paintcomponent rather than paint method
(2) Description of Layeredpane
Jlayeredpanel as a Java-level panel is the best way to create multiple edit windows and implement some special display hierarchy effects
Components that currently have built-in support for Jlayeredpanel include the Jframe,jdialog,jdesktoppanel itself is a Jlayeredpanel object, and Jlayeredpanel can contain multiple JComponent component objects. And you can switch to the edit state with each other.
* It is noteworthy that:
because Jlayeredpanel does not have LayoutManager, you must complete the set SetBounds () function on each object that is added to the Jlayeredpanel, otherwise the component cannot be displayed. Because Jlayeredpanel does not have LayoutManager, you must complete the set SetBounds () function on each object that is added to the Jlayeredpanel, otherwise the component cannot be displayed.
Method 1:
Import java.awt.*;
Import javax.swing.*; Method 1: By adding a jpanel to the JFrame, the background picture is placed on JPanel to implement the public class Java_jframe extends JFrame//default BorderLayout {//Chuang
Build a container Container ct;
Create a background panel. Backgroundpanel BGP;
Custom background class//Create a button to prove that we did create a background picture, not a picture.
JButton JB;
public static void Main (string[] args) {new java_jframe ();
Public Java_jframe () {//Do not use any layout method.
Ct=this.getcontentpane ();
This.setlayout (NULL); Redraw the background picture bgp=new Backgroundpanel ((New ImageIcon ("D:\\fox download\\editplus_ck_xp85\\5.png")). GetImage ());
parameter is an Image object, Bgp.setbounds (0,0,400,300);
Ct.add (BGP);
Create button jb=new JButton ("Test button");
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); Setting the control opaque, if false, is transparent}//draw the background again, inherited from Jpanle, is a way for swing controls to inherit the implementation, not the paint () public Vo in AWT
ID paintcomponent (Graphics g)//drawing class, details can be seen in the blogger's Java java-graphics {super.paintcomponents (g); G.drawimage (Im,0,0,this.getwidth (), This.getheight (), this); Draws the currently available image in the specified image. The upper-left corner of the image is (x, y) in the coordinate space of the graphics context. The transparent pixels in the image do not affect the pixels that already exist at this point}}
Method 2:
We used Jlayeredpane,jlayeredpane to add depth to the jfc/swing container, allowing components to overlap when needed. The Integer object specifies the depth of each component in the container, where the higher-numbered component is on top of other components//levels: Default,palette,modal,popup,drag public class Java_jframe extends
JFrame {//Create a jlayeredpane for layering.
JLayeredPane Layeredpane;
Create a panel and a label to store the picture as a background.
JPanel JP;
JLabel JL;
ImageIcon image;
Create a button for the test.
JButton JB;
public static void Main (string[] args) {new java_jframe ();
Public Java_jframe () {layeredpane=new jlayeredpane ();
Image=new ImageIcon ("D:\\fox download\\editplus_ck_xp85\\5.png");//Find a picture to see the effect.
Create the background of those things 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);
Create a Test button jb=new JButton ("Test button"); Jb.setbounds (100,100,100,100); Put JP to the bottom.
/* Hierarchical relationship Visible Method 2 below the comment/Layeredpane.add (jp,jlayeredpane.default_layer);
Place the JB in a 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); }
}
Any comments or questions can be raised ~