java 菜单 颜色_如何在Java中设置菜单栏MenuBar的背景颜色

展开全部

/*

* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions

* are met:

*

*   - Redistributions of source code must retain the above copyright

*     notice, this list of conditions and the following disclaimer.

*

*   - Redistributions in binary form must reproduce the above copyright

*     notice, this list of conditions and the following disclaimer in the

*     documentation and/or other materials provided with the distribution.

*

*   - Neither the name of Oracle or the names of its

*     contributors may be used to endorse or promote products derived

*     from this software without specific prior written permission.

*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS

* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,

* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR

* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR

* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF

* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS

* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

package components;

import java.awt.*;

import java.awt.event.*;

import javax.swing.JMenu;

import javax.swing.JMenuItem;

import javax.swing.JCheckBoxMenuItem;

import javax.swing.JRadioButtonMenuItem;

import javax.swing.ButtonGroup;

import javax.swing.JMenuBar;

import javax.swing.KeyStroke;

import javax.swing.ImageIcon;

import javax.swing.JPanel;

import javax.swing.JTextArea;

import javax.swing.JScrollPane;

import javax.swing.JFrame;

/* MenuLookDemo.java requires images/middle.gif. */

/*

* This class exists solely to show you what menus look like.

* It has no menu-related event handling.

*/

public class MenuLookDemo {

JTextArea output;

JScrollPane scrollPane;

public JMenuBar createMenuBar() {

BackgroundMenuBar menuBar;

BackgroundMenu menu, submenu;

JMenuItem menuItem;

JRadioButtonMenuItem rbMenuItem;

JCheckBoxMenuItem cbMenuItem;

//Create the menu bar.

menuBar = new BackgroundMenuBar();

//Build the first menu.

menu = new BackgroundMenu("A Menu");

menu.setMnemonic(KeyEvent.VK_A);

menu.getAccessibleContext().setAccessibleDescription(

"The only menu in this program that has menu items");

menuBar.add(menu);

//a group of JMenuItems

menuItem = new JMenuItem("A text-only menu item",

KeyEvent.VK_T);

//menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead

menuItem.setAccelerator(KeyStroke.getKeyStroke(

KeyEvent.VK_1, ActionEvent.ALT_MASK));

menuItem.getAccessibleContext().setAccessibleDescription(

"This doesn't really do anything");

menu.add(menuItem);

ImageIcon icon = createImageIcon("images/middle.gif");

menuItem = new JMenuItem("Both text and icon", icon);

menuItem.setMnemonic(KeyEvent.VK_B);

menu.add(menuItem);

menuItem = new JMenuItem(icon);

menuItem.setMnemonic(KeyEvent.VK_D);

menu.add(menuItem);

//a group of radio button menu items

menu.addSeparator();

ButtonGroup group = new ButtonGroup();

rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");

rbMenuItem.setSelected(true);

rbMenuItem.setMnemonic(KeyEvent.VK_R);

group.add(rbMenuItem);

menu.add(rbMenuItem);

rbMenuItem = new JRadioButtonMenuItem("Another one");

rbMenuItem.setMnemonic(KeyEvent.VK_O);

group.add(rbMenuItem);

menu.add(rbMenuItem);

//a group of check box menu items

menu.addSeparator();

cbMenuItem = new JCheckBoxMenuItem("A check box menu item");

cbMenuItem.setMnemonic(KeyEvent.VK_C);

menu.add(cbMenuItem);

cbMenuItem = new JCheckBoxMenuItem("Another one");

cbMenuItem.setMnemonic(KeyEvent.VK_H);

menu.add(cbMenuItem);

//a submenu

menu.addSeparator();

submenu = new BackgroundMenu("A submenu");

submenu.setMnemonic(KeyEvent.VK_S);

menuItem = new JMenuItem("An item in the submenu");

menuItem.setAccelerator(KeyStroke.getKeyStroke(

KeyEvent.VK_2, ActionEvent.ALT_MASK));

submenu.add(menuItem);

menuItem = new JMenuItem("Another item");

submenu.add(menuItem);

menu.add(submenu);

//Build second menu in the menu bar.

menu = new BackgroundMenu("Another Menu");

menu.setMnemonic(KeyEvent.VK_N);

menu.getAccessibleContext().setAccessibleDescription(

"This menu does nothing");

menuBar.add(menu);

return menuBar;

}

public Container createContentPane() {

//Create the content-pane-to-be.

JPanel contentPane = new JPanel(new BorderLayout());

contentPane.setOpaque(true);

//Create a scrolled text area.

output = new JTextArea(5, 30);

output.setEditable(false);

scrollPane = new JScrollPane(output);

//Add the text area to the content pane.

contentPane.add(scrollPane, BorderLayout.CENTER);

return contentPane;

}

/** Returns an ImageIcon, or null if the path was invalid. */

protected static ImageIcon createImageIcon(String path) {

java.net.URL imgURL = MenuLookDemo.class.getResource(path);

if (imgURL != null) {

return new ImageIcon(imgURL);

} else {

System.err.println("Couldn't find file: " + path);

return null;

}

}

/**

* Create the GUI and show it.  For thread safety,

* this method should be invoked from the

* event-dispatching thread.

*/

private static void createAndShowGUI() {

//Create and set up the window.

JFrame frame = new JFrame("MenuLookDemo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create and set up the content pane.

MenuLookDemo demo = new MenuLookDemo();

frame.setJMenuBar(demo.createMenuBar());

frame.setContentPane(demo.createContentPane());

//Display the window.

frame.setSize(450, 260);

frame.setVisible(true);

}

public static void main(String[] args) {

//Schedule a job for the event-dispatching thread:

//creating and showing this application's GUI.

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

}

});

}

}

class BackgroundMenuBar extends JMenuBar

{

Color bgColor=Color.BLUE;

public void setColor(Color color)

{

e69da5e887aa62616964757a686964616f31333335306261bgColor=color;

}

@Override

protected void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setColor(bgColor);

g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

}

}

class BackgroundMenu extends JMenu

{

Color bgColor=Color.BLUE;

public BackgroundMenu(String s){

super(s);

}

public void setColor(Color color)

{

bgColor=color;

}

@Override

protected void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setColor(bgColor);

g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

}

}

关键代码:class BackgroundMenuBar extends JMenuBar

{

Color bgColor=Color.BLUE;

public void setColor(Color color)

{

bgColor=color;

}

@Override

protected void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setColor(bgColor);

g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

}

}

class BackgroundMenu extends JMenu

{

Color bgColor=Color.BLUE;

public BackgroundMenu(String s){

super(s);

}

public void setColor(Color color)

{

bgColor=color;

}

@Override

protected void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setColor(bgColor);

g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值