【发布时间】:2015-12-05 18:30:08
【问题描述】:
我希望菜单栏上的菜单在鼠标悬停时更改其背景颜色 .. 就像在大多数应用程序中一样。
我想要这个效果 -> Sample Picture
到目前为止我尝试了什么......
public class Menu extends JMenuBar implements ActionListener {
private JMenuItem fileItem_close;
private final MouseListener mouseAction = new MouseAdapter() { //i use this to apply the mouse event
@Override
public void mouseEntered(MouseEvent e) {
JMenu item = (JMenu)e.getSource(); //is this implementation correct ?
item.setOpaque(true);
};
@Override
public void mouseExited(MouseEvent e) {
JMenu item = (JMenu)e.getSource();
item.setOpaque(false);
};
};
public Menu() {
initFileMenu();
}
private void initFileMenu() {
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic('F');
fileMenu.setRolloverEnabled(true);
fileItem_close = new JMenuItem("Close");
fileItem_close.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, KeyEvent.ALT_MASK)); //exit on pressing (Alt+F4)
fileItem_close.addActionListener(this);
fileMenu.add(fileItem_close);
fileMenu.setRolloverEnabled(true);
fileMenu.addMouseListener(mouseAction);
fileMenu.setBackground(new Color(0x0066FF)); //The background is not visible as JMenu is not opaque by default.
add(fileMenu);
}
@Override
public void actionPerformed(ActionEvent e) {
JMenuItem source = (JMenuItem)e.getSource();
if(source == fileItem_close)
System.exit(0);
}
}
上面的代码不起作用,每当我将鼠标悬停在该菜单标题上时,什么都没有发生。
P.S:我不是 GUI 专家。
编辑: 我正在使用 Nimbus LaF
【问题讨论】: