JMenuBar и JMenu прозрачный
У меня проблемы с JMenuBar
а также JMenu
в нтебеях. Я просто хочу знать, могу ли я установить собственный цвет фона для JMenuBar
и JMenu
объекты внутри него? Я старался setBackgroundColor()
метод и не работает! Я хочу установить белый или прозрачный цвет, и я тоже попробовал это:
menubar.setBackground(Color.RED);
menu.setBackground(Color.yellow);
menubar.setOpaque(true);
menu.setOpaque(true);
и до сих пор так
и я хочу что-то подобное
Я использую NetBeans, и когда я устанавливаю предварительный просмотр, JMenuBar устанавливает белый фон. JMenu Background White.
Но когда я запускаю программу, все тот же цвет
1 ответ
Это работает для меня, используя:
.setBackground(Color.RED)
а также setOpaque(true)
Вам не нужно устанавливать opaque как true для JMenuBar и JMenuItem, потому что они имеют значение true как непрозрачное значение по умолчанию. Тем не менее, вы явно установили opaque как true для JMenu, поскольку его значение по умолчанию - 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());
и вы увидите в консоли: правда, ложь, правда. Таким образом, чтобы изменить фон JMenu, вы установили его непрозрачное значение как true.
Для вашего желаемого интерфейса здесь простой код:
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);
});
}
}