簡體   English   中英

JMenuBar和JMenu透明

[英]JMenuBar and JMenu transparent

我在Ntebeans中使用JMenuBarJMenu遇到麻煩。 我只想知道是否可以為其中的JMenuBarJMenu對象設置自定義背景色? 我嘗試了setBackgroundColor()方法,但它不起作用! 我想將顏色設置為白色或透明,我也嘗試了以下方法:

menubar.setBackground(Color.RED);
menu.setBackground(Color.yellow);
menubar.setOpaque(true);
menu.setOpaque(true);

仍然像這樣 沒有樣式的JMenuBar

我想要這樣

例

我正在使用Netbeans,當我設置預覽時,JMenuBar將背景設置為白色JMenu背景為白色

但是當我運行程序時,仍然是相同的顏色

它對我有用:

.setBackground(Color.RED) setOpaque(true)

您不需要將JMenuBar和JMenuItem的opaque設置為true,因為默認情況下它們具有true作為不透明的值。 但是,您已將JMenu顯式設置為opaque,因為其默認值為false。 這簡單的代碼向您顯示JMenuBar和JMenu和JMenuItem的默認值:

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    JMenu menu = new JMenu("My menu");
    menuBar.add(menu);

    JMenuItem item1 = new JMenuItem("My item");
    menu.add(item1);

    System.out.println(" " + menuBar.isOpaque() + ", " + menu.isOpaque() + ", " + item1.isOpaque());

您會在控制台中看到:true,false,true。 因此,要更改JMenu的背景,請將其不透明值設置為true。

對於您所需的gui,這里有一個簡單的代碼:

public class TutoMenuBar extends JFrame {

    public TutoMenuBar(String nameWindow) {
        super(nameWindow);
        initUI();
    }

    private void initUI() {

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu testingJMenu = new JMenu("Testing");
        testingJMenu.setOpaque(true);
        testingJMenu.setBackground(Color.BLUE);
        menuBar.add(testingJMenu);

        JMenu otherJMenu = new JMenu("Other");
        otherJMenu.setOpaque(true);
        otherJMenu.setBackground(Color.GREEN);
        menuBar.add(otherJMenu);

        JMenuItem menu_item_1JMenuItem = new JMenuItem("Menu Item 1");
        menu_item_1JMenuItem.setBackground(new Color(251, 41, 255));
        testingJMenu.add(menu_item_1JMenuItem);

        JMenuItem menu_item_2JMenuItem = new JMenuItem("Menu Item 2");
        menu_item_2JMenuItem.setBackground(new Color(251, 41, 255));
        testingJMenu.add(menu_item_2JMenuItem);

        pack();
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            TutoMenuBar test = new TutoMenuBar("Test");
            test.setVisible(true);
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM