gpt4 book ai didi

java - 在 Java 中为 TrayIcon 更改 PopupMenu 的 LAF

转载 作者:搜寻专家 更新时间:2023-11-01 03:07:33 25 4
gpt4 key购买 nike

我有以下代码来创建带有 PopupMenu 的 TrayIcon:

public void addToTray()
{
try
{
try {
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}

PopupMenu popMenu= new PopupMenu();
MenuItem exititem = new MenuItem("Exit");
popMenu.add(exititem);

BufferedImage trayImg = ImageIO.read(new File("Geqo.png"));
ImageIcon ii = new ImageIcon(trayImg);
TrayIcon trayIcon = new TrayIcon(ii.getImage(), "Geqo", popMenu);
trayIcon.setImageAutoSize(true);
SystemTray.getSystemTray().add(trayIcon);
}
catch (Exception e)
{
e.printStackTrace();
}
}

此代码旨在创建一个带有 PopupMenu 的 TrayIcon。这很好用。但我不喜欢默认的 LAF(我认为是金属)。所以我尝试将 LAF 更改为 nimbus,以及操作系统默认值 Windows,但无济于事。 LAF 似乎没有变化。谁能指导我如何更改 LAF?提前致谢:)!!

最佳答案

Popup 不是 Swing 组件(因此它不受 LookAndFeel 管理器的控制)。

Popup是一个AWT组件,一般使用原生组件。

相反,您应该尝试更像...

public void addToTray()
{
try
{
try {
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}

BufferedImage trayImg = ImageIO.read(new File("Geqo.png"));
ImageIcon ii = new ImageIcon(trayImg);
final TrayIcon trayIcon = new TrayIcon(ii.getImage(), "Geqo", null);

JPopupMenu jpopup = new JPopupMenu();
JMenuItem miExit = new JMenuItem("Exit");
jpopup.add(miExit);

miExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
SystemTray.getSystemTray().remove(trayIcon);
System.exit(0);
}
});

trayIcon.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
jpopup.setLocation(e.getX(), e.getY());
jpopup.setInvoker(jpopup);
jpopup.setVisible(true);
}
}
});

trayIcon.setImageAutoSize(true);
SystemTray.getSystemTray().add(trayIcon);
}
catch (Exception e)
{
e.printStackTrace();
}
}

这是基于 Using JPopupMneu in TrayIcon 中建议的想法

关于java - 在 Java 中为 TrayIcon 更改 PopupMenu 的 LAF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com