如何在任务栏的应用弹出菜单中添加垂直分隔符?
tray = SystemTray.getSystemTray();
openMenuItem = new MenuItem("Open P");
stopKLMenuItem = new MenuItem("Stop");
exitMenuItem = new MenuItem("exit");
menu.add(exitMenuItem);
menu.add(stopKLMenuItem);
menu.addSeparator(); // adds a horizontal separator
menu.add(openMenuItem);
trayIcon = new TrayIcon(image,"P",menu);
语句menu.addSeparator()
添加了一个水平分隔符。我还想要一个垂直分隔符,如:
我该怎么做?
答案 0 :(得分:6)
一个简单的技巧是向JMenuItem添加一个空图标。外观然后添加您正在寻找的垂直分隔符(当然,这仅适用于Windows L& F,其他L& F可能会以不同方式呈现):
产生它的代码:
import java.awt.AWTException;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestTrayIcon {
protected void initUI() {
TrayIcon trayIcon = new TrayIcon(new ImageIcon(
"http://3.bp.blogspot.com/-nh7fv5FqpU4/TeUbTvAdSkI/AAAAAAAAAUo/Ig53KJGvzlk/s45/avatar.png").getImage());
final JPopupMenu popupMenu = new JPopupMenu();
JMenuItem checkBox1 = new JMenuItem("Last checked...", new ImageIcon(new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB)));
JMenuItem checkBox2 = new JMenuItem("Open...");
popupMenu.add(checkBox1);
popupMenu.addSeparator();
popupMenu.add(checkBox2);
trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
popupMenu.setLocation(e.getX(), e.getY());
popupMenu.setInvoker(popupMenu);
popupMenu.setVisible(true);
}
}
});
try {
SystemTray.getSystemTray().add(trayIcon);
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new TestTrayIcon().initUI();
}
});
}
}
答案 1 :(得分:1)
想法
将Borders
(例如MatteBorders
)添加到JMenuItem(s)
将JPanel
添加到JPopup
必须为BorderLayout
设置JPopup
并将JPanel
添加到CENTER area
(和/或Borders
)
为BorderLayout
JPanel
将JSeparator
放入EAST
或WEST
区域(取决于方向)
将另一个JPanel
与JButtons
放在一起,模拟JMenuItem
(第一眼看上去并不差),输出到Swing Action
或{{1} }
与ActionListener
(我默认使用JWindow
或JPopup
)而不是ToolTip
也许我错了,但JPopup
看起来像chameleon
一次JPopup
,
另一个为JPanel
,
抱歉没有最深入的了解,对此感兴趣