如何删除JMenu或JMenuItem上的边框

时间:2015-02-27 15:27:46

标签: java swing jmenu jmenuitem jmenubar

我正在使用Eclipse Luna和Java 1.7,并且我正在尝试创建一个JPanel JMenuBar。此JMenuBar包含JMenu,其中又包含JMenuItem。为了使整个JMenuBar适合我的项目的视觉设计,我使用JMenu更改了JMenuBarJMenuItemUIManager.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。我希望这有帮助。 3 different states of the JMenuBar; red marks on said borders

0 个答案:

没有答案