Java弹出菜单是否侦听项目单击?
我正在使用以下代码创建一个非常简单的托盘菜单:Java弹出菜单是否侦听项目单击?,java,swing,awt,system-tray,jpopup,Java,Swing,Awt,System Tray,Jpopup,我正在使用以下代码创建一个非常简单的托盘菜单: final Frame frame = new Frame(""); frame.setUndecorated(true); // Check the SystemTray is supported if (!SystemTray.isSupported()) { System.out.println("SystemTray is
final Frame frame = new Frame("");
frame.setUndecorated(true);
// Check the SystemTray is supported
if (!SystemTray.isSupported()) {
System.out.println("SystemTray is not supported");
return;
}
final TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(
new URL("http://url.com/trayIcon.png")), "Library Drop");
final SystemTray tray = SystemTray.getSystemTray();
// Create a pop-up menu components
final PopupMenu popup = createPopupMenu();
trayIcon.setPopupMenu(popup);
trayIcon.addMouseListener(new MouseAdapter() {
//@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
frame.add(popup);
popup.show(frame, e.getXOnScreen(), e.getYOnScreen());
}
}
});
try {
frame.setResizable(false);
frame.setVisible(true);
tray.add(trayIcon);
} catch (AWTException e) {
System.out.println("TrayIcon could not be added.");
}
} catch (MalformedURLException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
protected static PopupMenu createPopupMenu() {
final PopupMenu popup = new PopupMenu();
MenuItem aboutItem = new MenuItem("Accept");
MenuItem aboutItem1 = new MenuItem("Dont accept");
MenuItem aboutItem2 = new MenuItem("Quit");
// Add components to pop-up menu
popup.add(aboutItem);
popup.add(aboutItem1);
popup.addSeparator();
popup.add(aboutItem2);
return popup;
}
当用户选择“接受”、“不接受”等时,我如何倾听和检查
此外,由于某些原因,托盘图标在trayIcon上的高度是最大的,我如何才能告诉托盘图标精确地为X X X Y pixles
编辑:高度/宽度问题仅在Mac中存在,在Windows上可以正常工作,只需在菜单项上使用即可
MenuItem aboutItem = new MenuItem("Accept");
aboutItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
System.out.println("Accept clicked!");
}
});
只需在菜单项上使用即可
MenuItem aboutItem = new MenuItem("Accept");
aboutItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
System.out.println("Accept clicked!");
}
});
我非常确定TrayIcon
的宽度和高度由操作系统控制。我非常确定TrayIcon
的宽度和高度由操作系统控制。