import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MenuBarBackground extends JFrame
{
JMenuBar mbar;
JMenu menu;
public MenuBarBackground()
{
setTitle("MenuBar Background");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
mbar=new JMenuBar(){
public void paintComponent(Graphics g)
{
g.drawImage(Toolkit.getDefaultToolkit().getImage("F:/Wallpapers/violetpink.png"),0,0,this);
}
};
menu=new JMenu("Menu");
menu.setForeground(Color.white);
for(int i=1;i<=5;i++)
menu.add(new JMenuItem("MenuItem "+i));
mbar.add(menu);
setJMenuBar(mbar);
setSize(400,400);
}
public static void main(String args[])
{
new MenuBarBackground();
}
}
Output
Look at menubar background image |
paintComponent(Graphics g):
Takes java.awt.Graphics
as parameter. This contains drawImage() method which takes java.awt.Image
object, x,y axes and ImageObserver object. paint() is not used here because, if we use this, i could not see the Menu.g.drawImage(Toolkit.getDefaultToolkit().getImage("F:/Wallpapers/violetpink.png"),0,0,this):
Method of java.awt.Graphics
class. java.awt.Toolkit
is a class containing a static method getDefaultToolkit()
which returns the object of that class only (java.awt.Toolkit). This class contains getImage()
method which takes the path of the image file and returns the java.awt.Image
object. My background image is located in F:\Wallpapers. You can notice / instead of \ this is because / is equal to \\ in Windows and similar operating systems. Next, 0,0 are the x,y co ordinates respectively. Try changing them, you'll notice the change. this represents current object which acts as ImageObserver. In this way, we can set background image to JMenuBar easily in single step.