我在Ntebeans的JMenuBar
和JMenu
遇到了一些问题。我只是想知道我可以为其中的JMenuBar
和JMenu
对象设置自定义背景颜色吗?我尝试了setBackgroundColor()
方法但它不起作用!我想要设置白色或透明,我也试过这个:
menubar.setBackground(Color.RED);
menu.setBackground(Color.yellow);
menubar.setOpaque(true);
menu.setOpaque(true);
仍然喜欢这样
我想要一些这样的
我正在使用Netbeans,当我设置预览时,JMenuBar将背景设置为白色 JMenu Background White
但是当我运行程序时,仍然是一样的 same color
答案 0 :(得分:0)
它适用于我:
.setBackground(Color.RED)
和 setOpaque(true)
答案 1 :(得分:0)
您不需要将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);
});
}
}