我正在使用Eclipse Luna和Java 1.7,并且我正在尝试创建一个JPanel
JMenuBar
。此JMenuBar
包含JMenu
,其中又包含JMenuItem
。为了使整个JMenuBar
适合我的项目的视觉设计,我使用JMenu
更改了JMenuBar
,JMenuItem
和UIManager.put()
的背景和前景色。结果应该是一个下拉菜单,其中的部分仅按颜色的不同阴影划分(在我的示例中为蓝色)。没有线条或边框。
然而,MenuItem
上还留有带白色的银色蚀刻边框。
我的问题是:如何让这个边框消失?
我也想知道这个边框出现在哪个元素上,以及它是否是一个"特征"或者它有某种意义。
SSCCE:
package sscce;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;
@SuppressWarnings("serial")
public class GameUIPanel extends JFrame {
public GameUIPanel() {
setLayout(new BorderLayout());
setPreferredSize(new Dimension(800, 600));
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setBackground(Color.decode("#00a2e8"));
// create and adjust Components
UIManager.put("MenuBar.background", Color.decode("#00a2e8"));
UIManager.put("MenuBar.selectionBackground", Color.decode("#0092e4"));
UIManager.put("Menu.background", Color.decode("#00beff"));
UIManager.put("Menu.selectionBackground", Color.decode("#00a2e8"));
UIManager.put("Menu.foreground", Color.decode("#91593c"));
UIManager.put("Menu.selectionForeground", Color.decode("#7e3c1a"));
UIManager.put("MenuItem.background", Color.decode("#00beff"));
UIManager.put("MenuItem.selectionBackground", Color.decode("#00a2e8"));
UIManager.put("MenuItem.foreground", Color.decode("#91593c"));
UIManager.put("MenuItem.selectionForeground", Color.decode("#7e3c1a"));
UIManager.put("PopupMenu.border",
BorderFactory.createLineBorder(Color.decode("#00beff"), 1));
UIManager.put("PopupMenu.foreground", Color.decode("#000000"));
JMenuBar menubar = new JMenuBar();
menubar.setBorder(BorderFactory.createLineBorder(
Color.decode("#7e3c1a"), 2, false));
JMenu gameMenu = new JMenu("Game");
gameMenu.setOpaque(true);
gameMenu.setFont(Font.decode("Arial-BOLD-24"));
JMenuItem back = new JMenuItem("Back");
back.setFont(Font.decode("Arial-BOLD-24"));
gameMenu.add(back);
menubar.add(gameMenu);
setJMenuBar(menubar);
pack();
setVisible(true);
}
public static void main(String[] args) {
GameUIPanel gui = new GameUIPanel();
}
}
添加了一个图像,作为requesttet。我希望这有帮助。